A significant number of hotel bookings are called-off due to cancellations or no-shows. The typical reasons for cancellations include change of plans, scheduling conflicts, etc. This is often made easier by the option to do so free of charge or preferably at a low cost which is beneficial to hotel guests but it is a less desirable and possibly revenue-diminishing factor for hotels to deal with. Such losses are particularly high on last-minute cancellations.
The new technologies involving online booking channels have dramatically changed customers’ booking possibilities and behavior. This adds a further dimension to the challenge of how hotels handle cancellations, which are no longer limited to traditional booking and guest characteristics.
The cancellation of bookings impact a hotel on various fronts:
The increasing number of cancellations calls for a Machine Learning based solution that can help in predicting which booking is likely to be canceled. INN Hotels Group has a chain of hotels in Portugal, they are facing problems with the high number of booking cancellations and have reached out to your firm for data-driven solutions. You as a data scientist have to analyze the data provided to find which factors have a high influence on booking cancellations, build a predictive model that can predict which booking is going to be canceled in advance, and help in formulating profitable policies for cancellations and refunds.
The data contains the different attributes of customers' booking details. The detailed data dictionary is given below.
Data Dictionary
# Installing the libraries with the specified version.
#!pip install pandas==1.5.3 numpy==1.25.2 matplotlib==3.7.1 seaborn==0.13.1 scikit-learn==1.2.2 statsmodels==0.14.1 -q --user
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
#select model and sklearn imports
import statsmodels.api as sm
from sklearn.metrics import roc_curve,recall_score,roc_auc_score,precision_score,accuracy_score,confusion_matrix,f1_score,precision_recall_curve
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
Note: After running the above cell, kindly restart the notebook kernel and run all cells sequentially from the start again.
data = pd.read_csv("INNHotelsGroup.csv")
df= data.copy()
The initial steps to get an overview of any dataset is to:
df.head().T
| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| Booking_ID | INN00001 | INN00002 | INN00003 | INN00004 | INN00005 |
| no_of_adults | 2 | 2 | 1 | 2 | 2 |
| no_of_children | 0 | 0 | 0 | 0 | 0 |
| no_of_weekend_nights | 1 | 2 | 2 | 0 | 1 |
| no_of_week_nights | 2 | 3 | 1 | 2 | 1 |
| type_of_meal_plan | Meal Plan 1 | Not Selected | Meal Plan 1 | Meal Plan 1 | Not Selected |
| required_car_parking_space | 0 | 0 | 0 | 0 | 0 |
| room_type_reserved | Room_Type 1 | Room_Type 1 | Room_Type 1 | Room_Type 1 | Room_Type 1 |
| lead_time | 224 | 5 | 1 | 211 | 48 |
| arrival_year | 2017 | 2018 | 2018 | 2018 | 2018 |
| arrival_month | 10 | 11 | 2 | 5 | 4 |
| arrival_date | 2 | 6 | 28 | 20 | 11 |
| market_segment_type | Offline | Online | Online | Online | Online |
| repeated_guest | 0 | 0 | 0 | 0 | 0 |
| no_of_previous_cancellations | 0 | 0 | 0 | 0 | 0 |
| no_of_previous_bookings_not_canceled | 0 | 0 | 0 | 0 | 0 |
| avg_price_per_room | 65.0 | 106.68 | 60.0 | 100.0 | 94.5 |
| no_of_special_requests | 0 | 1 | 0 | 0 | 0 |
| booking_status | Not_Canceled | Not_Canceled | Canceled | Canceled | Canceled |
Checking the Shape of the data
df.shape
(36275, 19)
Observation
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 36275 entries, 0 to 36274 Data columns (total 19 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Booking_ID 36275 non-null object 1 no_of_adults 36275 non-null int64 2 no_of_children 36275 non-null int64 3 no_of_weekend_nights 36275 non-null int64 4 no_of_week_nights 36275 non-null int64 5 type_of_meal_plan 36275 non-null object 6 required_car_parking_space 36275 non-null int64 7 room_type_reserved 36275 non-null object 8 lead_time 36275 non-null int64 9 arrival_year 36275 non-null int64 10 arrival_month 36275 non-null int64 11 arrival_date 36275 non-null int64 12 market_segment_type 36275 non-null object 13 repeated_guest 36275 non-null int64 14 no_of_previous_cancellations 36275 non-null int64 15 no_of_previous_bookings_not_canceled 36275 non-null int64 16 avg_price_per_room 36275 non-null float64 17 no_of_special_requests 36275 non-null int64 18 booking_status 36275 non-null object dtypes: float64(1), int64(13), object(5) memory usage: 5.3+ MB
Observation
data.describe()
| no_of_adults | no_of_children | no_of_weekend_nights | no_of_week_nights | required_car_parking_space | lead_time | arrival_year | arrival_month | arrival_date | repeated_guest | no_of_previous_cancellations | no_of_previous_bookings_not_canceled | avg_price_per_room | no_of_special_requests | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 | 36275.000000 |
| mean | 1.844962 | 0.105279 | 0.810724 | 2.204300 | 0.030986 | 85.232557 | 2017.820427 | 7.423653 | 15.596995 | 0.025637 | 0.023349 | 0.153411 | 103.423539 | 0.619655 |
| std | 0.518715 | 0.402648 | 0.870644 | 1.410905 | 0.173281 | 85.930817 | 0.383836 | 3.069894 | 8.740447 | 0.158053 | 0.368331 | 1.754171 | 35.089424 | 0.786236 |
| min | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 2017.000000 | 1.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 25% | 2.000000 | 0.000000 | 0.000000 | 1.000000 | 0.000000 | 17.000000 | 2018.000000 | 5.000000 | 8.000000 | 0.000000 | 0.000000 | 0.000000 | 80.300000 | 0.000000 |
| 50% | 2.000000 | 0.000000 | 1.000000 | 2.000000 | 0.000000 | 57.000000 | 2018.000000 | 8.000000 | 16.000000 | 0.000000 | 0.000000 | 0.000000 | 99.450000 | 0.000000 |
| 75% | 2.000000 | 0.000000 | 2.000000 | 3.000000 | 0.000000 | 126.000000 | 2018.000000 | 10.000000 | 23.000000 | 0.000000 | 0.000000 | 0.000000 | 120.000000 | 1.000000 |
| max | 4.000000 | 10.000000 | 7.000000 | 17.000000 | 1.000000 | 443.000000 | 2018.000000 | 12.000000 | 31.000000 | 1.000000 | 13.000000 | 58.000000 | 540.000000 | 5.000000 |
Observation
no_of_adults: Is normally distrubuted. no_of_children: The range various from 0 to 10. Which is slightly obnormal no_of_weekend_nights,no_of_week_nights,lead_time,no_of_previous_cancellations,no_of_previous_bookings_not_canceled,avg_price_per_room,no_of_special_requests: It looks like the data highly skewed to-words left.col=data.select_dtypes(include=np.object_).columns.tolist()
for i,var in enumerate (col):
print(df[var].value_counts())
print("***"*15)
Booking_ID
INN00001 1
INN24187 1
INN24181 1
INN24182 1
INN24183 1
..
INN12086 1
INN12085 1
INN12084 1
INN12083 1
INN36275 1
Name: count, Length: 36275, dtype: int64
*********************************************
type_of_meal_plan
Meal Plan 1 27835
Not Selected 5130
Meal Plan 2 3305
Meal Plan 3 5
Name: count, dtype: int64
*********************************************
room_type_reserved
Room_Type 1 28130
Room_Type 4 6057
Room_Type 6 966
Room_Type 2 692
Room_Type 5 265
Room_Type 7 158
Room_Type 3 7
Name: count, dtype: int64
*********************************************
market_segment_type
Online 23214
Offline 10528
Corporate 2017
Complementary 391
Aviation 125
Name: count, dtype: int64
*********************************************
booking_status
Not_Canceled 24390
Canceled 11885
Name: count, dtype: int64
*********************************************
df.isnull().sum()
Booking_ID 0 no_of_adults 0 no_of_children 0 no_of_weekend_nights 0 no_of_week_nights 0 type_of_meal_plan 0 required_car_parking_space 0 room_type_reserved 0 lead_time 0 arrival_year 0 arrival_month 0 arrival_date 0 market_segment_type 0 repeated_guest 0 no_of_previous_cancellations 0 no_of_previous_bookings_not_canceled 0 avg_price_per_room 0 no_of_special_requests 0 booking_status 0 dtype: int64
Observation
df.duplicated().sum()
0
Observation
def histogram_boxplot(data, feature, figsize=(15, 10), kde=False, bins=None):
"""
Boxplot and histogram combined
data: dataframe
feature: dataframe column
figsize: size of figure (default (15,10))
kde: whether to show the density curve (default False)
bins: number of bins for histogram (default None)
"""
f2, (ax_box2, ax_hist2) = plt.subplots(
nrows=2, # Number of rows of the subplot grid= 2
sharex=True, # x-axis will be shared among all subplots
gridspec_kw={"height_ratios": (0.25, 0.75)},
figsize=figsize,
) # creating the 2 subplots
sns.boxplot(
data=data, x=feature, ax=ax_box2, showmeans=True, color="violet"
) # boxplot will be created and a triangle will indicate the mean value of the column
sns.histplot(
data=data, x=feature, kde=kde, ax=ax_hist2, bins=bins
) if bins else sns.histplot(
data=data, x=feature, kde=kde, ax=ax_hist2
) # For histogram
ax_hist2.axvline(
data[feature].mean(), color="green", linestyle="--"
) # Add mean to the histogram
ax_hist2.axvline(
data[feature].median(), color="black", linestyle="-"
) # Add median to the histogram
def labeled_barplot(data, feature, perc=False, n=None):
"""
Barplot with percentage at the top
data: dataframe
feature: dataframe column
perc: whether to display percentages instead of count (default is False)
n: displays the top n category levels (default is None, i.e., display all levels)
"""
total = len(data[feature]) # length of the column
count = data[feature].nunique()
if n is None:
plt.figure(figsize=(count + 2, 6))
else:
plt.figure(figsize=(n + 2, 6))
plt.xticks(rotation=90, fontsize=15)
ax = sns.countplot(
data=data,
x=feature,
palette="Paired",
order=data[feature].value_counts().index[:n],
)
for p in ax.patches:
if perc == True:
label = "{:.1f}%".format(
100 * p.get_height() / total
) # percentage of each class of the category
else:
label = p.get_height() # count of each level of the category
x = p.get_x() + p.get_width() / 2 # width of the plot
y = p.get_height() # height of the plot
ax.annotate(
label,
(x, y),
ha="center",
va="center",
size=12,
xytext=(0, 5),
textcoords="offset points",
) # annotate the percentage
plt.show() # show the plot
def distribution_plot_wrt_target(data, predictor, target):
fig, axs = plt.subplots(2, 2, figsize=(12, 10))
target_uniq = data[target].unique()
axs[0, 0].set_title("Distribution of target for target=" + str(target_uniq[0]))
sns.histplot(
data=data[data[target] == target_uniq[0]],
x=predictor,
kde=True,
ax=axs[0, 0],
color="teal",
stat="density",
)
axs[0, 1].set_title("Distribution of target for target=" + str(target_uniq[1]))
sns.histplot(
data=data[data[target] == target_uniq[1]],
x=predictor,
kde=True,
ax=axs[0, 1],
color="orange",
stat="density",
)
axs[1, 0].set_title("Boxplot w.r.t target")
sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow")
axs[1, 1].set_title("Boxplot (without outliers) w.r.t target")
sns.boxplot(
data=data,
x=target,
y=predictor,
ax=axs[1, 1],
showfliers=False,
palette="gist_rainbow",
)
plt.tight_layout()
plt.show()
histogram_boxplot(df,"no_of_adults",kde=True)
Observation
histogram_boxplot(df,"no_of_children",kde=True)
Observation
histogram_boxplot(df,"no_of_weekend_nights",kde=True)
Observation
histogram_boxplot(df,"no_of_week_nights",kde=True)
Observation
histogram_boxplot(df,"required_car_parking_space")
Observation
histogram_boxplot(df,"lead_time",kde=True)
Observation
histogram_boxplot(df,"arrival_year",kde=True)
Observation
histogram_boxplot(df,"arrival_month",kde=True)
Observation
histogram_boxplot(df,"repeated_guest",kde=True)
Observation
histogram_boxplot(df,"no_of_previous_cancellations",kde=True)
Observation
histogram_boxplot(df,"no_of_previous_bookings_not_canceled",kde=True)
Observation
histogram_boxplot(df,"avg_price_per_room",kde=True)
Observation
histogram_boxplot(df,"no_of_special_requests",kde=True)
Observation
labeled_barplot(df,"no_of_special_requests",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
labeled_barplot(df,"no_of_week_nights",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
labeled_barplot(df,"type_of_meal_plan",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
labeled_barplot(df,"room_type_reserved",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
labeled_barplot(df,"market_segment_type",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
labeled_barplot(df,"booking_status",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
plt.figure(figsize=(10,8))
sns.histplot(df,x="arrival_month",hue="arrival_year");
df.groupby(["arrival_month"])["arrival_year"].value_counts()
arrival_month arrival_year
1 2018 1014
2 2018 1704
3 2018 2358
4 2018 2736
5 2018 2598
6 2018 3203
7 2018 2557
2017 363
8 2018 2799
2017 1014
9 2018 2962
2017 1649
10 2018 3404
2017 1913
11 2018 2333
2017 647
12 2018 2093
2017 928
Name: count, dtype: int64
Observation
OCTOBER Busiest month with 3404, followed by 2018 SEPTEMBER with 2962plt.figure(figsize=(10,8))
sns.histplot(df,x="avg_price_per_room",hue="market_segment_type");
df.groupby(["market_segment_type"])["avg_price_per_room"].sum()
market_segment_type Aviation 12588.00 Complementary 1228.43 Corporate 167232.98 Offline 964708.84 Online 2605930.63 Name: avg_price_per_room, dtype: float64
Observation
labeled_barplot(df,"repeated_guest",perc=True)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
distribution_plot_wrt_target(df,"no_of_special_requests","booking_status")
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:28: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow") C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:31: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(
df.groupby(["booking_status"])["no_of_special_requests"].value_counts()
booking_status no_of_special_requests
Canceled 0 8545
1 2703
2 637
Not_Canceled 0 11232
1 8670
2 3727
3 675
4 78
5 8
Name: count, dtype: int64
Observation
distribution_plot_wrt_target(df,"no_of_weekend_nights","booking_status")
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:28: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow") C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:31: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(
Observation
distribution_plot_wrt_target(df,"no_of_week_nights","booking_status")
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:28: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow") C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:31: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(
Observation
distribution_plot_wrt_target(df,"avg_price_per_room","booking_status")
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:28: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow") C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:31: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(
Observation
distribution_plot_wrt_target(df,"avg_price_per_room","arrival_year")
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:28: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(data=data, x=target, y=predictor, ax=axs[1, 0], palette="gist_rainbow") C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\2989500541.py:31: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. sns.boxplot(
Observation
Zerodollar on the both the years need to find in which month there were noted sns.barplot(df,x="arrival_month",y="avg_price_per_room",hue="arrival_year");
Observation
Zero dollars in all the month plt.xticks(rotation=90)
sns.barplot(df,x="avg_price_per_room",y="market_segment_type");
Observation
labeled_barplot(df,"avg_price_per_room",perc=True,n=10)
C:\Users\Miguel\AppData\Local\Temp\ipykernel_2840\3025790399.py:19: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect. ax = sns.countplot(
Observation
plt.figure(figsize=(10,9))
sns.heatmap(df.corr(numeric_only=True),annot=True,cbar=True)
<Axes: >
df.isnull().sum()
Booking_ID 0 no_of_adults 0 no_of_children 0 no_of_weekend_nights 0 no_of_week_nights 0 type_of_meal_plan 0 required_car_parking_space 0 room_type_reserved 0 lead_time 0 arrival_year 0 arrival_month 0 arrival_date 0 market_segment_type 0 repeated_guest 0 no_of_previous_cancellations 0 no_of_previous_bookings_not_canceled 0 avg_price_per_room 0 no_of_special_requests 0 booking_status 0 dtype: int64
Observation
numerical_col = data.select_dtypes(include=np.number).columns.tolist()
plt.figure(figsize=(20, 30))
for i, variable in enumerate(numerical_col):
plt.subplot(5, 4, i + 1)
plt.boxplot(data[variable], whis=1.5)
plt.tight_layout()
plt.title(variable)
plt.show()
Q1 = df["avg_price_per_room"].quantile(0.25) # 25th quantile
Q3 = df["avg_price_per_room"].quantile(0.75) # 75th quantile
IQR = Q3 - Q1
Lower_Whisker = Q1 - 1.5 * IQR
Upper_Whisker = Q3 + 1.5 * IQR
df["avg_price_per_room"] = np.clip(df["avg_price_per_room"], Lower_Whisker, Upper_Whisker)
df["avg_price_per_room"].value_counts()
avg_price_per_room
179.55 1069
65.00 848
75.00 826
90.00 703
95.00 669
...
102.86 1
143.99 1
90.44 1
120.91 1
167.80 1
Name: count, Length: 3513, dtype: int64
numerical_col = df.select_dtypes(include=np.number).columns.tolist()
plt.figure(figsize=(20, 30))
for i, variable in enumerate(numerical_col):
plt.subplot(5, 4, i + 1)
plt.boxplot(data[variable], whis=1.5)
plt.tight_layout()
plt.title(variable)
plt.show()
df=df.drop("Booking_ID",axis=1)
data=df.copy()
We are reshaping the type_of_meal_plan, arrival_year, and booking_status
df["booking_status"].unique()
array(['Not_Canceled', 'Canceled'], dtype=object)
reshape={
"type_of_meal_plan":{"Not Selected":0,"Meal Plan 3":1,"Meal Plan 2":2,"Meal Plan 1":3},
"arrival_year":{2017:0,2018:1},
"booking_status":{"Not_Canceled":1,"Canceled":0}
}
df=df.replace(reshape)
X= df.drop("booking_status",axis=1)
Y =df["booking_status"]
X=pd.get_dummies(X,drop_first=1,dtype=float)
X
| no_of_adults | no_of_children | no_of_weekend_nights | no_of_week_nights | type_of_meal_plan | required_car_parking_space | lead_time | arrival_year | arrival_month | arrival_date | ... | room_type_reserved_Room_Type 2 | room_type_reserved_Room_Type 3 | room_type_reserved_Room_Type 4 | room_type_reserved_Room_Type 5 | room_type_reserved_Room_Type 6 | room_type_reserved_Room_Type 7 | market_segment_type_Complementary | market_segment_type_Corporate | market_segment_type_Offline | market_segment_type_Online | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | 0 | 1 | 2 | 3 | 0 | 224 | 0 | 10 | 2 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 1 | 2 | 0 | 2 | 3 | 0 | 0 | 5 | 1 | 11 | 6 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 2 | 1 | 0 | 2 | 1 | 3 | 0 | 1 | 1 | 2 | 28 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 3 | 2 | 0 | 0 | 2 | 3 | 0 | 211 | 1 | 5 | 20 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 4 | 2 | 0 | 1 | 1 | 0 | 0 | 48 | 1 | 4 | 11 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 36270 | 3 | 0 | 2 | 6 | 3 | 0 | 85 | 1 | 8 | 3 | ... | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36271 | 2 | 0 | 1 | 3 | 3 | 0 | 228 | 1 | 10 | 17 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36272 | 2 | 0 | 2 | 6 | 3 | 0 | 148 | 1 | 7 | 1 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36273 | 2 | 0 | 0 | 3 | 0 | 0 | 63 | 1 | 4 | 21 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36274 | 2 | 0 | 1 | 2 | 3 | 0 | 207 | 1 | 12 | 30 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
36275 rows × 25 columns
#adding the constant to X
X=sm.add_constant(X)
x_train, x_test, y_train, y_test = train_test_split(
X, Y, test_size=0.25, random_state=1
)
y_train
8271 1
34593 0
18637 1
34925 1
8385 1
..
7813 0
32511 0
5192 0
12172 1
33003 0
Name: booking_status, Length: 27206, dtype: int64
print("Shape of Training set : ", x_train.shape)
print("Shape of test set : ", x_test.shape)
print("Percentage of classes in training set:")
print(y_train.value_counts(normalize=True))
print("Percentage of classes in test set:")
print(y_test.value_counts(normalize=True))
Shape of Training set : (27206, 26) Shape of test set : (9069, 26) Percentage of classes in training set: booking_status 1 0.671874 0 0.328126 Name: proportion, dtype: float64 Percentage of classes in test set: booking_status 1 0.673834 0 0.326166 Name: proportion, dtype: float64
We will now perform logistic regression using statsmodels, a Python module that provides functions for the estimation of many statistical models, as well as for conducting statistical tests, and statistical data exploration.
Using statsmodels, we will be able to check the statistical validity of our model - identify the significant predictors from p-values that we get for each predictor variable.
logit =sm.Logit(y_train,x_train.astype(float)).fit()
logit.summary()
Warning: Maximum number of iterations has been exceeded.
Current function value: 0.424620
Iterations: 35
C:\Users\Miguel\AppData\Roaming\Python\Python310\site-packages\statsmodels\base\model.py:607: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
warnings.warn("Maximum Likelihood optimization failed to "
| Dep. Variable: | booking_status | No. Observations: | 27206 |
|---|---|---|---|
| Model: | Logit | Df Residuals: | 27180 |
| Method: | MLE | Df Model: | 25 |
| Date: | Sat, 29 Jun 2024 | Pseudo R-squ.: | 0.3290 |
| Time: | 18:45:09 | Log-Likelihood: | -11552. |
| converged: | False | LL-Null: | -17217. |
| Covariance Type: | nonrobust | LLR p-value: | 0.000 |
| coef | std err | z | P>|z| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| const | 2.7856 | 0.268 | 10.401 | 0.000 | 2.261 | 3.311 |
| no_of_adults | -0.1052 | 0.036 | -2.892 | 0.004 | -0.176 | -0.034 |
| no_of_children | -0.1576 | 0.055 | -2.854 | 0.004 | -0.266 | -0.049 |
| no_of_weekend_nights | -0.1188 | 0.019 | -6.220 | 0.000 | -0.156 | -0.081 |
| no_of_week_nights | -0.0421 | 0.012 | -3.552 | 0.000 | -0.065 | -0.019 |
| type_of_meal_plan | 0.1025 | 0.016 | 6.229 | 0.000 | 0.070 | 0.135 |
| required_car_parking_space | 1.5966 | 0.133 | 11.964 | 0.000 | 1.335 | 1.858 |
| lead_time | -0.0157 | 0.000 | -62.242 | 0.000 | -0.016 | -0.015 |
| arrival_year | -0.4371 | 0.056 | -7.869 | 0.000 | -0.546 | -0.328 |
| arrival_month | 0.0429 | 0.006 | 6.907 | 0.000 | 0.031 | 0.055 |
| arrival_date | -0.0014 | 0.002 | -0.742 | 0.458 | -0.005 | 0.002 |
| repeated_guest | 2.1004 | 0.568 | 3.701 | 0.000 | 0.988 | 3.213 |
| no_of_previous_cancellations | -0.2299 | 0.078 | -2.958 | 0.003 | -0.382 | -0.078 |
| no_of_previous_bookings_not_canceled | 0.1857 | 0.158 | 1.174 | 0.240 | -0.124 | 0.496 |
| avg_price_per_room | -0.0205 | 0.001 | -28.209 | 0.000 | -0.022 | -0.019 |
| no_of_special_requests | 1.4784 | 0.029 | 50.775 | 0.000 | 1.421 | 1.535 |
| room_type_reserved_Room_Type 2 | 0.3624 | 0.126 | 2.875 | 0.004 | 0.115 | 0.609 |
| room_type_reserved_Room_Type 3 | 0.0063 | 1.303 | 0.005 | 0.996 | -2.548 | 2.561 |
| room_type_reserved_Room_Type 4 | 0.3036 | 0.052 | 5.871 | 0.000 | 0.202 | 0.405 |
| room_type_reserved_Room_Type 5 | 0.7278 | 0.198 | 3.670 | 0.000 | 0.339 | 1.116 |
| room_type_reserved_Room_Type 6 | 0.7776 | 0.139 | 5.602 | 0.000 | 0.506 | 1.050 |
| room_type_reserved_Room_Type 7 | 0.8632 | 0.269 | 3.210 | 0.001 | 0.336 | 1.390 |
| market_segment_type_Complementary | 25.7582 | 4.55e+04 | 0.001 | 1.000 | -8.92e+04 | 8.92e+04 |
| market_segment_type_Corporate | 1.1393 | 0.260 | 4.385 | 0.000 | 0.630 | 1.649 |
| market_segment_type_Offline | 2.1182 | 0.249 | 8.502 | 0.000 | 1.630 | 2.606 |
| market_segment_type_Online | 0.3738 | 0.246 | 1.520 | 0.128 | -0.108 | 0.856 |
Observation
Model can make wrong predictions as:
Predicting a customer has cancel but in reality the customer has not cancelled.
Predicting a customer doesn't cancel but in reality the salary of the person canceled.
Which case is more important?
Both the cases are important as:
If we Predicting a customer has cancel but in reality the customer has not cancelled then hostel need to accommodate the person or hotel will loss the customer.
If we Predicting a customer doesn't cancel but in reality the customer canceled then hotel will loss the money.
How to reduce this loss?
We need to reduce both False Negatives and False Positives
f1_score should be maximized as the greater the f1_score, the higher the chances of reducing both False Negatives and False Positives and identifying both the classes correctly
First, let's create functions to calculate different metrics and confusion matrix so that we don't have to use the same code repeatedly for each model.
The model_performance_classification_statsmodels function will be used to check the model performance of models.
# defining a function to compute different metrics to check performance of a classification model built using statsmodels
def model_performance_classification_statsmodels(
model, predictors, target, threshold=0.5
):
"""
Function to compute different metrics to check classification model performance
model: classifier
predictors: independent variables
target: dependent variable
threshold: threshold for classifying the observation as class 1
"""
# checking which probabilities are greater than threshold
pred_temp = model.predict(predictors) > threshold
# rounding off the above values to get classes
pred = np.round(pred_temp)
acc = accuracy_score(target, pred) # to compute Accuracy
recall = recall_score(target, pred) # to compute Recall
precision = precision_score(target, pred) # to compute Precision
f1 = f1_score(target, pred) # to compute F1-score
# creating a dataframe of metrics
df_perf = pd.DataFrame(
{"Accuracy": acc, "Recall": recall, "Precision": precision, "F1": f1,},
index=[0],
)
return df_perf
# defining a function to plot the confusion_matrix of a classification model
def confusion_matrix_statsmodels(model, predictors, target, threshold=0.5):
"""
To plot the confusion_matrix with percentages
model: classifier
predictors: independent variables
target: dependent variable
threshold: threshold for classifying the observation as class 1
"""
y_pred = model.predict(predictors) > threshold
cm = confusion_matrix(target, y_pred)
labels = np.asarray(
[
["{0:0.0f}".format(item) + "\n{0:.2%}".format(item / cm.flatten().sum())]
for item in cm.flatten()
]
).reshape(2, 2)
plt.figure(figsize=(6, 4))
sns.heatmap(cm, annot=labels, fmt="")
plt.ylabel("True label")
plt.xlabel("Predicted label")
confusion_matrix_statsmodels(logit, x_train, y_train)
model_performance_classification_statsmodels(logit, x_train, y_train)
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.805852 | 0.889874 | 0.832659 | 0.860316 |
There are different ways of detecting (or testing for) multicollinearity. One such way is using the Variation Inflation Factor (VIF).
Variance Inflation factor: Variance inflation factors measure the inflation in the variances of the regression coefficients estimates due to collinearities that exist among the predictors. It is a measure of how much the variance of the estimated regression coefficient $\beta_k$ is "inflated" by the existence of correlation among the predictor variables in the model.
General Rule of thumb:
The purpose of the analysis should dictate which threshold to use
from statsmodels.stats.outliers_influence import variance_inflation_factor
# Calculate VIF for each feature
vif_data = {
'Feature': x_train.columns,
'VIF': [variance_inflation_factor(x_train.values, i) for i in range(x_train.shape[1])]
}
# Create a DataFrame with the VIF values
vif_df = pd.DataFrame(vif_data)
# Sort the DataFrame by VIF values in descending order
vif_df_sorted = vif_df.sort_values(by='VIF', ascending=False).reset_index(drop=True)
# Display the sorted DataFrame
print("VIF values sorted in descending order:\n")
print(vif_df_sorted)
VIF values sorted in descending order:
Feature VIF
0 const 352.301359
1 market_segment_type_Online 72.020663
2 market_segment_type_Offline 64.915167
3 market_segment_type_Corporate 17.163202
4 market_segment_type_Complementary 4.406718
5 no_of_children 1.989761
6 room_type_reserved_Room_Type 6 1.943554
7 avg_price_per_room 1.787892
8 repeated_guest 1.783108
9 no_of_previous_bookings_not_canceled 1.612068
10 room_type_reserved_Room_Type 4 1.369397
11 no_of_previous_cancellations 1.364936
12 no_of_adults 1.346828
13 arrival_year 1.331140
14 lead_time 1.291926
15 arrival_month 1.253170
16 no_of_special_requests 1.248142
17 type_of_meal_plan 1.190052
18 room_type_reserved_Room_Type 2 1.102830
19 no_of_week_nights 1.094269
20 room_type_reserved_Room_Type 7 1.078913
21 no_of_weekend_nights 1.069453
22 required_car_parking_space 1.039371
23 room_type_reserved_Room_Type 5 1.029612
24 arrival_date 1.005960
25 room_type_reserved_Room_Type 3 1.002985
Observation
market_segment_type_Online, market_segment_type_Offline and market_segment_type_Corporate are from categorical from market_segment_type
We will drop market_segment_type_Online as we get the same information from market_segment_type_Offline
x_train1 = x_train.drop("market_segment_type_Online", axis=1)
x_test1=x_test.drop("market_segment_type_Online",axis=1)
vif_series2 = pd.Series(
[variance_inflation_factor(x_train1.values, i) for i in range(x_train1.shape[1])],
index=x_train1.columns,
)
print("Series before feature selection: \n\n{}\n".format(vif_series2))
Series before feature selection: const 53.486802 no_of_adults 1.330410 no_of_children 1.988884 no_of_weekend_nights 1.069006 no_of_week_nights 1.093586 type_of_meal_plan 1.188876 required_car_parking_space 1.039276 lead_time 1.288635 arrival_year 1.329425 arrival_month 1.252329 arrival_date 1.005951 repeated_guest 1.779453 no_of_previous_cancellations 1.364618 no_of_previous_bookings_not_canceled 1.611857 avg_price_per_room 1.787542 no_of_special_requests 1.243364 room_type_reserved_Room_Type 2 1.102668 room_type_reserved_Room_Type 3 1.002984 room_type_reserved_Room_Type 4 1.363842 room_type_reserved_Room_Type 5 1.029611 room_type_reserved_Room_Type 6 1.943293 room_type_reserved_Room_Type 7 1.078832 market_segment_type_Complementary 1.253555 market_segment_type_Corporate 1.523028 market_segment_type_Offline 1.485010 dtype: float64
Dropping market_segment_type_Online fixes the multicollinearity in market_segment_type column.
logit_1=sm.Logit(y_train,x_train1.astype(float)).fit()
logit_1.summary()
Warning: Maximum number of iterations has been exceeded.
Current function value: 0.424661
Iterations: 35
C:\Users\Miguel\AppData\Roaming\Python\Python310\site-packages\statsmodels\base\model.py:607: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
warnings.warn("Maximum Likelihood optimization failed to "
| Dep. Variable: | booking_status | No. Observations: | 27206 |
|---|---|---|---|
| Model: | Logit | Df Residuals: | 27181 |
| Method: | MLE | Df Model: | 24 |
| Date: | Sat, 29 Jun 2024 | Pseudo R-squ.: | 0.3290 |
| Time: | 18:45:12 | Log-Likelihood: | -11553. |
| converged: | False | LL-Null: | -17217. |
| Covariance Type: | nonrobust | LLR p-value: | 0.000 |
| coef | std err | z | P>|z| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| const | 3.1477 | 0.124 | 25.485 | 0.000 | 2.906 | 3.390 |
| no_of_adults | -0.0983 | 0.036 | -2.726 | 0.006 | -0.169 | -0.028 |
| no_of_children | -0.1557 | 0.055 | -2.818 | 0.005 | -0.264 | -0.047 |
| no_of_weekend_nights | -0.1196 | 0.019 | -6.262 | 0.000 | -0.157 | -0.082 |
| no_of_week_nights | -0.0428 | 0.012 | -3.611 | 0.000 | -0.066 | -0.020 |
| type_of_meal_plan | 0.1016 | 0.016 | 6.179 | 0.000 | 0.069 | 0.134 |
| required_car_parking_space | 1.5941 | 0.133 | 11.944 | 0.000 | 1.333 | 1.856 |
| lead_time | -0.0156 | 0.000 | -62.305 | 0.000 | -0.016 | -0.015 |
| arrival_year | -0.4401 | 0.056 | -7.929 | 0.000 | -0.549 | -0.331 |
| arrival_month | 0.0426 | 0.006 | 6.857 | 0.000 | 0.030 | 0.055 |
| arrival_date | -0.0014 | 0.002 | -0.745 | 0.456 | -0.005 | 0.002 |
| repeated_guest | 2.0684 | 0.568 | 3.643 | 0.000 | 0.955 | 3.181 |
| no_of_previous_cancellations | -0.2268 | 0.078 | -2.919 | 0.004 | -0.379 | -0.075 |
| no_of_previous_bookings_not_canceled | 0.1853 | 0.157 | 1.179 | 0.238 | -0.123 | 0.493 |
| avg_price_per_room | -0.0205 | 0.001 | -28.186 | 0.000 | -0.022 | -0.019 |
| no_of_special_requests | 1.4801 | 0.029 | 50.870 | 0.000 | 1.423 | 1.537 |
| room_type_reserved_Room_Type 2 | 0.3651 | 0.126 | 2.897 | 0.004 | 0.118 | 0.612 |
| room_type_reserved_Room_Type 3 | 0.0073 | 1.303 | 0.006 | 0.996 | -2.547 | 2.561 |
| room_type_reserved_Room_Type 4 | 0.2983 | 0.052 | 5.781 | 0.000 | 0.197 | 0.399 |
| room_type_reserved_Room_Type 5 | 0.7287 | 0.198 | 3.675 | 0.000 | 0.340 | 1.117 |
| room_type_reserved_Room_Type 6 | 0.7739 | 0.139 | 5.576 | 0.000 | 0.502 | 1.046 |
| room_type_reserved_Room_Type 7 | 0.8583 | 0.269 | 3.192 | 0.001 | 0.331 | 1.385 |
| market_segment_type_Complementary | 25.4889 | 4.78e+04 | 0.001 | 1.000 | -9.36e+04 | 9.37e+04 |
| market_segment_type_Corporate | 0.7735 | 0.099 | 7.824 | 0.000 | 0.580 | 0.967 |
| market_segment_type_Offline | 1.7465 | 0.048 | 36.208 | 0.000 | 1.652 | 1.841 |
print("Training Performance")
model_performance_classification_statsmodels(logit_1, x_train1, y_train)
Training Performance
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.806146 | 0.890038 | 0.832898 | 0.86052 |
For other attributes present in the data, the p-values are high only for few dummy variables and since only one (or some) of the categorical levels have a high p-value we will drop them iteratively as sometimes p-values change after dropping a variable. So, we'll not drop all variables at once.
Instead, we will do the following repeatedly using a loop:
Note: The above process can also be done manually by picking one variable at a time that has a high p-value, dropping it, and building a model again. But that might be a little tedious and using a loop will be more efficien
# initial list of columns
cols = x_train1.columns.tolist()
# setting an initial max p-value
max_p_value = 1
while len(cols) > 0:
# defining the train set
x_train_aux = x_train1[cols]
# fitting the model
model = sm.Logit(y_train, x_train_aux).fit(disp=False)
# getting the p-values and the maximum p-value
p_values = model.pvalues
max_p_value = max(p_values)
# name of the variable with maximum p-value
feature_with_p_max = p_values.idxmax()
if max_p_value > 0.05:
cols.remove(feature_with_p_max)
else:
break
selected_features = cols
print(selected_features)
C:\Users\Miguel\AppData\Roaming\Python\Python310\site-packages\statsmodels\base\model.py:607: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
warnings.warn("Maximum Likelihood optimization failed to "
['const', 'no_of_adults', 'no_of_children', 'no_of_weekend_nights', 'no_of_week_nights', 'type_of_meal_plan', 'required_car_parking_space', 'lead_time', 'arrival_year', 'arrival_month', 'repeated_guest', 'no_of_previous_cancellations', 'avg_price_per_room', 'no_of_special_requests', 'room_type_reserved_Room_Type 2', 'room_type_reserved_Room_Type 4', 'room_type_reserved_Room_Type 5', 'room_type_reserved_Room_Type 6', 'room_type_reserved_Room_Type 7', 'market_segment_type_Corporate', 'market_segment_type_Offline']
x_test2=x_test1[selected_features]
x_train2=x_train1[selected_features]
logit_2=sm.Logit(y_train,x_train2.astype(float)).fit()
logit_2.summary()
Optimization terminated successfully.
Current function value: 0.425266
Iterations 9
| Dep. Variable: | booking_status | No. Observations: | 27206 |
|---|---|---|---|
| Model: | Logit | Df Residuals: | 27185 |
| Method: | MLE | Df Model: | 20 |
| Date: | Sat, 29 Jun 2024 | Pseudo R-squ.: | 0.3280 |
| Time: | 18:45:13 | Log-Likelihood: | -11570. |
| converged: | True | LL-Null: | -17217. |
| Covariance Type: | nonrobust | LLR p-value: | 0.000 |
| coef | std err | z | P>|z| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| const | 3.1684 | 0.119 | 26.530 | 0.000 | 2.934 | 3.402 |
| no_of_adults | -0.1019 | 0.036 | -2.828 | 0.005 | -0.173 | -0.031 |
| no_of_children | -0.1547 | 0.055 | -2.803 | 0.005 | -0.263 | -0.047 |
| no_of_weekend_nights | -0.1213 | 0.019 | -6.355 | 0.000 | -0.159 | -0.084 |
| no_of_week_nights | -0.0442 | 0.012 | -3.735 | 0.000 | -0.067 | -0.021 |
| type_of_meal_plan | 0.1050 | 0.016 | 6.390 | 0.000 | 0.073 | 0.137 |
| required_car_parking_space | 1.5967 | 0.134 | 11.960 | 0.000 | 1.335 | 1.858 |
| lead_time | -0.0157 | 0.000 | -62.550 | 0.000 | -0.016 | -0.015 |
| arrival_year | -0.4379 | 0.055 | -7.894 | 0.000 | -0.547 | -0.329 |
| arrival_month | 0.0438 | 0.006 | 7.070 | 0.000 | 0.032 | 0.056 |
| repeated_guest | 2.5182 | 0.504 | 4.992 | 0.000 | 1.530 | 3.507 |
| no_of_previous_cancellations | -0.2022 | 0.072 | -2.794 | 0.005 | -0.344 | -0.060 |
| avg_price_per_room | -0.0209 | 0.001 | -29.071 | 0.000 | -0.022 | -0.019 |
| no_of_special_requests | 1.4790 | 0.029 | 50.865 | 0.000 | 1.422 | 1.536 |
| room_type_reserved_Room_Type 2 | 0.3561 | 0.126 | 2.828 | 0.005 | 0.109 | 0.603 |
| room_type_reserved_Room_Type 4 | 0.3033 | 0.052 | 5.880 | 0.000 | 0.202 | 0.404 |
| room_type_reserved_Room_Type 5 | 0.7434 | 0.198 | 3.764 | 0.000 | 0.356 | 1.131 |
| room_type_reserved_Room_Type 6 | 0.7898 | 0.139 | 5.694 | 0.000 | 0.518 | 1.062 |
| room_type_reserved_Room_Type 7 | 0.8837 | 0.268 | 3.297 | 0.001 | 0.358 | 1.409 |
| market_segment_type_Corporate | 0.7602 | 0.099 | 7.698 | 0.000 | 0.567 | 0.954 |
| market_segment_type_Offline | 1.7374 | 0.048 | 36.050 | 0.000 | 1.643 | 1.832 |
Coefficient of some levels of required_car_parking_space, repeated_guest,no_of_special_requests and market_segment_type_Offline are positive an increase in these will lead to increase in chances of a customer not-Cancel.
Coefficient of lead_time, arrival_month, no_of_week_nights, no_of_weekend_nights, no_of_children, no_of_adults, and no_of_previous_cancellations are negative increase in these will lead to cancelation.
Converting coefficients to odds
# converting coefficients to odds
odds = np.exp(logit_2.params)
# finding the percentage change
perc_change_odds = (np.exp(logit_2.params) - 1) * 100
# removing limit from number of columns to display
pd.set_option("display.max_columns", None)
# adding the odds to a dataframe
pd.DataFrame({"Odds": odds, "Change_odd%": perc_change_odds}, index=x_train2.columns).T
| const | no_of_adults | no_of_children | no_of_weekend_nights | no_of_week_nights | type_of_meal_plan | required_car_parking_space | lead_time | arrival_year | arrival_month | repeated_guest | no_of_previous_cancellations | avg_price_per_room | no_of_special_requests | room_type_reserved_Room_Type 2 | room_type_reserved_Room_Type 4 | room_type_reserved_Room_Type 5 | room_type_reserved_Room_Type 6 | room_type_reserved_Room_Type 7 | market_segment_type_Corporate | market_segment_type_Offline | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Odds | 23.768449 | 0.903103 | 0.856671 | 0.885807 | 0.956743 | 1.110674 | 4.936749 | 0.984452 | 0.645402 | 1.044772 | 12.406560 | 0.816965 | 0.979317 | 4.388422 | 1.427715 | 1.354321 | 2.103071 | 2.202893 | 2.419719 | 2.138650 | 5.682613 |
| Change_odd% | 2276.844935 | -9.689663 | -14.332892 | -11.419324 | -4.325735 | 11.067378 | 393.674854 | -1.554765 | -35.459758 | 4.477246 | 1140.655953 | -18.303473 | -2.068268 | 338.842242 | 42.771516 | 35.432070 | 110.307117 | 120.289290 | 141.971879 | 113.865016 | 468.261279 |
Coefficient interpretations
market_segment_type_Offline: Holding all other features constant a 1 unit change in market_segment_type_Offline will increase the odds of a customer not-cancel by ~5.7 times or a ~468 increase in odds of not-cancelling.required_car_parking_space: Holding all other features constant a 1 unit change in market_segment_type_Offline will increase the odds of a customer not-cancel by ~4.9 times or a ~393% increase in odds of not-cancelling.confusion_matrix_statsmodels(logit_2, x_train2, y_train)
log_reg_model_train_perf=model_performance_classification_statsmodels(logit_2, x_train2, y_train)
print("Training modelperformance")
log_reg_model_train_perf
Training modelperformance
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.805888 | 0.890092 | 0.832566 | 0.860369 |
confusion_matrix_statsmodels(logit_2, x_test2, y_test)
log_reg_model_test_perf=model_performance_classification_statsmodels(logit_2, x_test2, y_test)
print("Training modelperformance")
log_reg_model_test_perf
Training modelperformance
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.803948 | 0.889707 | 0.831218 | 0.859469 |
Let's see if the f1_score can be improved further by changing the model threshold First, we will check the ROC curve, compute the area under the ROC curve (ROC-AUC), and then use it to find the optimal threshold Next, we will check the Precision-Recall curve to find the right balance between precision and recall as our metric of choice is f1_score
roc_score_train=roc_auc_score(y_train,logit_2.predict(x_train2))
fpr, tpr, thresholds=roc_curve(y_train,logit_2.predict(x_train2))
plt.figure(figsize=(7, 5))
plt.plot(fpr, tpr, label="Logistic Regression (area = %0.2f)" % roc_score_train)
plt.plot([0, 1], [0, 1], "r--")
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver operating characteristic")
plt.legend(loc="lower right")
plt.show()
optimal_idx = np.argmax(tpr - fpr)
optimal_threshold_auc_roc = thresholds[optimal_idx]
print(optimal_threshold_auc_roc)
0.6309643264462703
confusion_matrix_statsmodels(
logit_2, x_train2, y_train, threshold=optimal_threshold_auc_roc
)
# checking model performance for this model
log_reg_model_train_perf_threshold_auc_roc = model_performance_classification_statsmodels(
logit_2, x_train2, y_train, threshold=optimal_threshold_auc_roc
)
print("Test performance:")
log_reg_model_train_perf_threshold_auc_roc
Test performance:
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.792141 | 0.820778 | 0.863134 | 0.841423 |
roc_score_test=roc_auc_score(y_test,logit_2.predict(x_test2))
fpr,tpr,threshold=roc_curve(y_test,logit_2.predict(x_test2))
plt.figure(figsize=(7, 5))
plt.plot(fpr, tpr, label="Logistic Regression (area = %0.2f)" % roc_score_test)
plt.plot([0, 1], [0, 1], "r--")
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver operating characteristic")
plt.legend(loc="lower right")
plt.show()
confusion_matrix_statsmodels(
logit_2, x_test2, y_test, threshold=optimal_threshold_auc_roc
)
log_reg_model_test_perf_threshold_auc_roc=model_performance_classification_statsmodels(
logit_2, x_test2, y_test, threshold=optimal_threshold_auc_roc
)
print("testing modelperformance")
log_reg_model_test_perf_threshold_auc_roc
testing modelperformance
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.794575 | 0.824415 | 0.864447 | 0.843957 |
y_scores = logit_2.predict(x_train2)
prec, rec, tre = precision_recall_curve(y_train, y_scores,)
def plot_prec_recall_vs_tresh(precisions, recalls, thresholds):
plt.plot(thresholds, precisions[:-1], "b--", label="precision")
plt.plot(thresholds, recalls[:-1], "g--", label="recall")
plt.xlabel("Threshold")
plt.legend(loc="upper left")
plt.ylim([0, 1])
plt.figure(figsize=(10, 7))
plot_prec_recall_vs_tresh(prec, rec, tre)
plt.show()
optimal_threshold_curve = 0.59
confusion_matrix_statsmodels(
logit_2, x_train2, y_train, threshold=optimal_threshold_curve
)
log_reg_model_train_perf_threshold_curve = model_performance_classification_statsmodels(
logit_2, x_train2, y_train, threshold=optimal_threshold_curve
)
print("Training performance:")
log_reg_model_train_perf_threshold_curve
Training performance:
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.799015 | 0.845615 | 0.853836 | 0.849706 |
Model is performing well on training set. There's not much improvement in the model performance as the default threshold is 0.63 and here we get 0.59 as the optimal threshold.
confusion_matrix_statsmodels(
logit_2, x_test2, y_test, threshold=optimal_threshold_curve
)
log_reg_model_test_perf_threshold_curve = model_performance_classification_statsmodels(
logit_2, x_test2, y_test, threshold=optimal_threshold_curve
)
print("Testing performance:")
log_reg_model_test_perf_threshold_curve
Testing performance:
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.802845 | 0.849779 | 0.856507 | 0.85313 |
# training performance comparison
models_train_comp_df = pd.concat(
[
log_reg_model_train_perf.T,
log_reg_model_train_perf_threshold_auc_roc.T,
log_reg_model_train_perf_threshold_curve.T,
],
axis=1,
)
models_train_comp_df.columns = [
"Logistic Regression-default Threshold (0.5)",
"Logistic Regression-0.63 Threshold",
"Logistic Regression-0.59 Threshold",
]
print("Training performance comparison:")
models_train_comp_df
Training performance comparison:
| Logistic Regression-default Threshold (0.5) | Logistic Regression-0.63 Threshold | Logistic Regression-0.59 Threshold | |
|---|---|---|---|
| Accuracy | 0.805888 | 0.792141 | 0.799015 |
| Recall | 0.890092 | 0.820778 | 0.845615 |
| Precision | 0.832566 | 0.863134 | 0.853836 |
| F1 | 0.860369 | 0.841423 | 0.849706 |
# test performance comparison
models_train_comp_df = pd.concat(
[
log_reg_model_test_perf.T,
log_reg_model_test_perf_threshold_auc_roc.T,
log_reg_model_test_perf_threshold_curve.T,
],
axis=1,
)
models_train_comp_df.columns = [
"Logistic Regression-default Threshold (0.5)",
"Logistic Regression-0.63 Threshold",
"Logistic Regression-0.59 Threshold",
]
print("Training performance comparison:")
models_train_comp_df
Training performance comparison:
| Logistic Regression-default Threshold (0.5) | Logistic Regression-0.63 Threshold | Logistic Regression-0.59 Threshold | |
|---|---|---|---|
| Accuracy | 0.803948 | 0.794575 | 0.802845 |
| Recall | 0.889707 | 0.824415 | 0.849779 |
| Precision | 0.831218 | 0.864447 | 0.856507 |
| F1 | 0.859469 | 0.843957 | 0.853130 |
We have been able to build a predictive model that can be used INN Hotels to find the customers cancelled with an f1_score of 0.85 on the training set and formulate policies accordingly.
All the logistic regression models have given a generalized performance on the training and test set.
Coefficient of some levels of required_car_parking_space, repeated_guest,no_of_special_requests and market_segment_type_Offline are positive an increase in these will lead to increase in chances of a customer not-Cancel.
required_car_parking_space: Holding all other features constant a 1 unit change in market_segment_type_Offline will increase the odds of a customer not-cancel by ~4.9 times or a ~393% increase in odds of not-cancelling.
INN Hotels need to reduse the lead time that would reduce the chance of the cancelation. People book earlies has highest chance of cancelation.
As the Number of the gust and the childern increase there is high possible chance of cancelation.
For the decision Tree model the outliers will not effect the results so we have to build the X and Y and the train and the test
def model_performance_classification_sklearn(model, predictors, target):
"""
Function to compute different metrics to check classification model performance
model: classifier
predictors: independent variables
target: dependent variable
"""
# predicting using the independent variables
pred = model.predict(predictors)
acc = accuracy_score(target, pred) # to compute Accuracy
recall = recall_score(target, pred) # to compute Recall
precision = precision_score(target, pred) # to compute Precision
f1 = f1_score(target, pred) # to compute F1-score
# creating a dataframe of metrics
df_perf = pd.DataFrame(
{"Accuracy": acc, "Recall": recall, "Precision": precision, "F1": f1,},
index=[0],
)
return df_perf
def confusion_matrix_sklearn(model, predictors, target):
"""
To plot the confusion_matrix with percentages
model: classifier
predictors: independent variables
target: dependent variable
"""
y_pred = model.predict(predictors)
cm = confusion_matrix(target, y_pred)
labels = np.asarray(
[
["{0:0.0f}".format(item) + "\n{0:.2%}".format(item / cm.flatten().sum())]
for item in cm.flatten()
]
).reshape(2, 2)
plt.figure(figsize=(6, 4))
sns.heatmap(cm, annot=labels, fmt="")
plt.ylabel("True label")
plt.xlabel("Predicted label")
data=data.replace({"booking_status":{"Not_Canceled":1,"Canceled":0}})
X=data.drop("booking_status",axis=1)
Y=data["booking_status"]
X=pd.get_dummies(X,columns=["type_of_meal_plan","room_type_reserved","market_segment_type"],dtype=float)
X
| no_of_adults | no_of_children | no_of_weekend_nights | no_of_week_nights | required_car_parking_space | lead_time | arrival_year | arrival_month | arrival_date | repeated_guest | no_of_previous_cancellations | no_of_previous_bookings_not_canceled | avg_price_per_room | no_of_special_requests | type_of_meal_plan_Meal Plan 1 | type_of_meal_plan_Meal Plan 2 | type_of_meal_plan_Meal Plan 3 | type_of_meal_plan_Not Selected | room_type_reserved_Room_Type 1 | room_type_reserved_Room_Type 2 | room_type_reserved_Room_Type 3 | room_type_reserved_Room_Type 4 | room_type_reserved_Room_Type 5 | room_type_reserved_Room_Type 6 | room_type_reserved_Room_Type 7 | market_segment_type_Aviation | market_segment_type_Complementary | market_segment_type_Corporate | market_segment_type_Offline | market_segment_type_Online | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2 | 0 | 1 | 2 | 0 | 224 | 2017 | 10 | 2 | 0 | 0 | 0 | 65.00 | 0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 1 | 2 | 0 | 2 | 3 | 0 | 5 | 2018 | 11 | 6 | 0 | 0 | 0 | 106.68 | 1 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 2 | 1 | 0 | 2 | 1 | 0 | 1 | 2018 | 2 | 28 | 0 | 0 | 0 | 60.00 | 0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 3 | 2 | 0 | 0 | 2 | 0 | 211 | 2018 | 5 | 20 | 0 | 0 | 0 | 100.00 | 0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 4 | 2 | 0 | 1 | 1 | 0 | 48 | 2018 | 4 | 11 | 0 | 0 | 0 | 94.50 | 0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 36270 | 3 | 0 | 2 | 6 | 0 | 85 | 2018 | 8 | 3 | 0 | 0 | 0 | 167.80 | 1 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36271 | 2 | 0 | 1 | 3 | 0 | 228 | 2018 | 10 | 17 | 0 | 0 | 0 | 90.95 | 2 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36272 | 2 | 0 | 2 | 6 | 0 | 148 | 2018 | 7 | 1 | 0 | 0 | 0 | 98.39 | 2 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36273 | 2 | 0 | 0 | 3 | 0 | 63 | 2018 | 4 | 21 | 0 | 0 | 0 | 94.50 | 0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 36274 | 2 | 0 | 1 | 2 | 0 | 207 | 2018 | 12 | 30 | 0 | 0 | 0 | 161.67 | 0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
36275 rows × 30 columns
X_train_1,X_test_1,y_train_1,y_test_1=train_test_split(X,Y,random_state=1,test_size=.25)
model0=DecisionTreeClassifier(random_state=1)
model0.fit(X_train_1,y_train_1)
DecisionTreeClassifier(random_state=1)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
DecisionTreeClassifier(random_state=1)
Model can make wrong predictions as:
Which case is more important?
If we predict that a customer will not cancel but in reality, the customer cancel, then the company will have to bear the cost loss of booking.
If we predict that a customer will cancel but in reality, the customer does not cancel, then the company will have to accomidated the room for the customer.
Booking by the customer and canceled that would cost more for the company
How to reduce the losses?
The company would want the recall to be maximized, greater the recall score higher are the chances of minimizing the False Negatives.
decision_tree_perf_train_without=model_performance_classification_sklearn(model0,X_train_1,y_train_1)
decision_tree_perf_train_without
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.993972 | 0.995569 | 0.99546 | 0.995514 |
confusion_matrix_sklearn(model0,X_train_1,y_train)
decision_tree_perf_test_without=model_performance_classification_sklearn(model0,X_test_1,y_test_1)
decision_tree_perf_test_without
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.870438 | 0.898544 | 0.908204 | 0.903348 |
confusion_matrix_sklearn(model0,X_test_1,y_test_1)
feature_name=X_train_1.columns.to_list()
plt.figure(figsize=(20,30))
tree.plot_tree(model0,
feature_names=feature_name,
class_names=None,
filled=True,
impurity=True,
node_ids=True,
proportion=False,
rounded=False,
precision=3,
fontsize=8);
print(tree.export_text(model0,feature_names=feature_name,show_weights=True))
|--- lead_time <= 151.50 | |--- no_of_special_requests <= 0.50 | | |--- market_segment_type_Online <= 0.50 | | | |--- lead_time <= 90.50 | | | | |--- no_of_weekend_nights <= 0.50 | | | | | |--- avg_price_per_room <= 179.47 | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | |--- lead_time <= 16.50 | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 162.09 | | | | | | | | | | |--- repeated_guest <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 15 | | | | | | | | | | |--- repeated_guest > 0.50 | | | | | | | | | | | |--- weights: [0.00, 153.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 162.09 | | | | | | | | | | |--- arrival_month <= 10.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_month > 10.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | |--- arrival_date <= 29.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- arrival_date > 29.50 | | | | | | | | | | |--- lead_time <= 5.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- lead_time > 5.00 | | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | |--- lead_time > 16.50 | | | | | | | | |--- avg_price_per_room <= 135.00 | | | | | | | | | |--- lead_time <= 86.50 | | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | | |--- truncated branch of depth 12 | | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | | |--- weights: [0.00, 32.00] class: 1 | | | | | | | | | |--- lead_time > 86.50 | | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- avg_price_per_room > 135.00 | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | |--- weights: [0.00, 1728.00] class: 1 | | | | | |--- avg_price_per_room > 179.47 | | | | | | |--- lead_time <= 22.00 | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- lead_time > 22.00 | | | | | | | |--- arrival_date <= 25.50 | | | | | | | | |--- weights: [18.00, 0.00] class: 0 | | | | | | | |--- arrival_date > 25.50 | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | |--- no_of_weekend_nights > 0.50 | | | | | |--- lead_time <= 68.50 | | | | | | |--- no_of_weekend_nights <= 4.50 | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | |--- lead_time <= 59.50 | | | | | | | | | | |--- market_segment_type_Aviation <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | | |--- market_segment_type_Aviation > 0.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | |--- lead_time > 59.50 | | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | | |--- weights: [0.00, 23.00] class: 1 | | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | |--- market_segment_type_Aviation <= 0.50 | | | | | | | | | | |--- lead_time <= 65.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | | |--- lead_time > 65.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- market_segment_type_Aviation > 0.50 | | | | | | | | | | |--- arrival_date <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_date > 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- arrival_date > 27.50 | | | | | | | | |--- lead_time <= 1.50 | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | |--- avg_price_per_room <= 77.50 | | | | | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 77.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | | | |--- weights: [36.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- lead_time > 1.50 | | | | | | | | | |--- avg_price_per_room <= 41.08 | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 41.08 | | | | | | | | | | |--- avg_price_per_room <= 116.30 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- avg_price_per_room > 116.30 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | |--- no_of_weekend_nights > 4.50 | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | |--- lead_time > 68.50 | | | | | | |--- avg_price_per_room <= 99.98 | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | |--- avg_price_per_room <= 62.50 | | | | | | | | | |--- weights: [0.00, 21.00] class: 1 | | | | | | | | |--- avg_price_per_room > 62.50 | | | | | | | | | |--- lead_time <= 77.00 | | | | | | | | | | |--- arrival_date <= 23.00 | | | | | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 23.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | |--- lead_time > 77.00 | | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | |--- arrival_month > 3.50 | | | | | | | | |--- lead_time <= 71.50 | | | | | | | | | |--- arrival_month <= 8.00 | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 8.00 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | |--- lead_time > 71.50 | | | | | | | | | |--- lead_time <= 87.50 | | | | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | | | | |--- weights: [0.00, 45.00] class: 1 | | | | | | | | | | |--- arrival_month > 8.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- lead_time > 87.50 | | | | | | | | | | |--- avg_price_per_room <= 77.88 | | | | | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 77.88 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | |--- avg_price_per_room > 99.98 | | | | | | | |--- lead_time <= 81.00 | | | | | | | | |--- avg_price_per_room <= 123.25 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- weights: [53.00, 0.00] class: 0 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- arrival_date <= 21.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 21.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 123.25 | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | |--- lead_time > 81.00 | | | | | | | | |--- lead_time <= 88.50 | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | |--- weights: [0.00, 17.00] class: 1 | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | |--- avg_price_per_room <= 110.62 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 110.62 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- lead_time > 88.50 | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | |--- lead_time > 90.50 | | | | |--- lead_time <= 116.50 | | | | | |--- avg_price_per_room <= 93.58 | | | | | | |--- arrival_date <= 6.50 | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | |--- arrival_month > 3.50 | | | | | | | | | |--- avg_price_per_room <= 80.38 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- avg_price_per_room > 80.38 | | | | | | | | | | |--- room_type_reserved_Room_Type 1 <= 0.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- room_type_reserved_Room_Type 1 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | |--- arrival_date <= 5.50 | | | | | | | | | |--- weights: [0.00, 39.00] class: 1 | | | | | | | | |--- arrival_date > 5.50 | | | | | | | | | |--- avg_price_per_room <= 75.22 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 75.22 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | |--- arrival_date > 6.50 | | | | | | | |--- avg_price_per_room <= 66.50 | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- lead_time <= 97.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- lead_time > 97.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- weights: [0.00, 26.00] class: 1 | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | |--- avg_price_per_room <= 58.75 | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 58.75 | | | | | | | | | | |--- lead_time <= 97.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 97.50 | | | | | | | | | | | |--- weights: [41.00, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 66.50 | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 82.50 | | | | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- arrival_month > 8.50 | | | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 82.50 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | |--- arrival_date <= 28.50 | | | | | | | | | | |--- no_of_weekend_nights <= 3.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- no_of_weekend_nights > 3.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 28.50 | | | | | | | | | | |--- lead_time <= 96.50 | | | | | | | | | | | |--- weights: [0.00, 12.00] class: 1 | | | | | | | | | | |--- lead_time > 96.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | |--- avg_price_per_room > 93.58 | | | | | | |--- arrival_date <= 16.50 | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | |--- lead_time <= 108.50 | | | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | | | |--- avg_price_per_room <= 125.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- avg_price_per_room > 125.00 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- lead_time > 108.50 | | | | | | | | | |--- lead_time <= 111.50 | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- lead_time > 111.50 | | | | | | | | | | |--- weights: [1.00, 12.00] class: 1 | | | | | | | |--- arrival_month > 7.50 | | | | | | | | |--- avg_price_per_room <= 108.50 | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | |--- weights: [48.00, 0.00] class: 0 | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | |--- lead_time <= 113.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- lead_time > 113.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 108.50 | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | |--- weights: [0.00, 45.00] class: 1 | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | |--- arrival_date <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | |--- arrival_date > 16.50 | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | |--- avg_price_per_room <= 127.39 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- weights: [53.00, 0.00] class: 0 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- avg_price_per_room > 127.39 | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- arrival_month > 8.50 | | | | | | | | |--- avg_price_per_room <= 101.34 | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 101.34 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- arrival_date <= 29.50 | | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 29.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- weights: [0.00, 8.00] class: 1 | | | | |--- lead_time > 116.50 | | | | | |--- no_of_week_nights <= 1.50 | | | | | | |--- arrival_month <= 3.50 | | | | | | | |--- weights: [0.00, 42.00] class: 1 | | | | | | |--- arrival_month > 3.50 | | | | | | | |--- avg_price_per_room <= 93.58 | | | | | | | | |--- avg_price_per_room <= 65.38 | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 65.38 | | | | | | | | | |--- avg_price_per_room <= 89.88 | | | | | | | | | | |--- weights: [0.00, 25.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 89.88 | | | | | | | | | | |--- avg_price_per_room <= 90.47 | | | | | | | | | | | |--- weights: [2.00, 8.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 90.47 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- avg_price_per_room > 93.58 | | | | | | | | |--- lead_time <= 145.50 | | | | | | | | | |--- arrival_month <= 7.00 | | | | | | | | | | |--- arrival_date <= 8.00 | | | | | | | | | | | |--- weights: [0.00, 15.00] class: 1 | | | | | | | | | | |--- arrival_date > 8.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- arrival_month > 7.00 | | | | | | | | | | |--- lead_time <= 141.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- lead_time > 141.50 | | | | | | | | | | | |--- weights: [2.00, 14.00] class: 1 | | | | | | | | |--- lead_time > 145.50 | | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | | |--- weights: [16.00, 0.00] class: 0 | | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | | |--- weights: [1.00, 1.00] class: 0 | | | | | |--- no_of_week_nights > 1.50 | | | | | | |--- no_of_adults <= 1.50 | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | |--- weights: [0.00, 113.00] class: 1 | | | | | | | |--- arrival_date > 26.50 | | | | | | | | |--- arrival_date <= 28.50 | | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | | | | | |--- arrival_date > 28.50 | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | |--- no_of_adults > 1.50 | | | | | | | |--- lead_time <= 125.50 | | | | | | | | |--- avg_price_per_room <= 90.47 | | | | | | | | | |--- avg_price_per_room <= 88.17 | | | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- avg_price_per_room > 88.17 | | | | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 90.47 | | | | | | | | | |--- weights: [0.00, 16.00] class: 1 | | | | | | | |--- lead_time > 125.50 | | | | | | | | |--- avg_price_per_room <= 155.78 | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | |--- arrival_date <= 10.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- arrival_date > 10.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | |--- lead_time <= 128.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 128.00 | | | | | | | | | | | |--- weights: [0.00, 81.00] class: 1 | | | | | | | | |--- avg_price_per_room > 155.78 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | |--- market_segment_type_Online > 0.50 | | | |--- lead_time <= 13.50 | | | | |--- avg_price_per_room <= 119.42 | | | | | |--- arrival_month <= 8.50 | | | | | | |--- arrival_month <= 1.50 | | | | | | | |--- weights: [0.00, 137.00] class: 1 | | | | | | |--- arrival_month > 1.50 | | | | | | | |--- lead_time <= 3.50 | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | |--- arrival_month <= 2.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 2.50 | | | | | | | | | | |--- avg_price_per_room <= 74.57 | | | | | | | | | | | |--- weights: [0.00, 33.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 74.57 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | |--- avg_price_per_room <= 75.46 | | | | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | | | | |--- weights: [13.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 75.46 | | | | | | | | | | |--- lead_time <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 2.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | |--- lead_time > 3.50 | | | | | | | | |--- avg_price_per_room <= 99.38 | | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | | |--- weights: [0.00, 16.00] class: 1 | | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | | |--- lead_time <= 12.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | | |--- lead_time > 12.50 | | | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | | |--- avg_price_per_room > 99.38 | | | | | | | | | |--- avg_price_per_room <= 117.25 | | | | | | | | | | |--- arrival_date <= 4.00 | | | | | | | | | | | |--- weights: [6.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 4.00 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | |--- avg_price_per_room > 117.25 | | | | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_month > 3.50 | | | | | | | | | | | |--- weights: [0.00, 12.00] class: 1 | | | | | |--- arrival_month > 8.50 | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | |--- avg_price_per_room <= 117.56 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- weights: [0.00, 157.00] class: 1 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- lead_time <= 8.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- lead_time > 8.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- weights: [0.00, 76.00] class: 1 | | | | | | | |--- avg_price_per_room > 117.56 | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | |--- avg_price_per_room <= 119.10 | | | | | | | | | | |--- arrival_date <= 3.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- arrival_date > 3.00 | | | | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 119.10 | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | |--- avg_price_per_room > 119.42 | | | | | |--- lead_time <= 3.50 | | | | | | |--- avg_price_per_room <= 178.78 | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | |--- lead_time <= 2.50 | | | | | | | | | | |--- arrival_date <= 22.00 | | | | | | | | | | | |--- weights: [0.00, 20.00] class: 1 | | | | | | | | | | |--- arrival_date > 22.00 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- lead_time > 2.50 | | | | | | | | | | |--- avg_price_per_room <= 132.00 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 132.00 | | | | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | |--- weights: [0.00, 52.00] class: 1 | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | |--- avg_price_per_room > 178.78 | | | | | | | |--- arrival_date <= 15.50 | | | | | | | | |--- arrival_date <= 10.50 | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | |--- arrival_date <= 6.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_date > 6.50 | | | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | |--- arrival_date > 10.50 | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | |--- arrival_date > 15.50 | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | |--- arrival_date <= 22.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 22.00 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | |--- weights: [0.00, 7.00] class: 1 | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | |--- lead_time > 3.50 | | | | | | |--- arrival_month <= 8.50 | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | | | |--- avg_price_per_room <= 160.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | | |--- avg_price_per_room > 160.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | |--- lead_time <= 5.50 | | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | | |--- lead_time > 5.50 | | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | | |--- weights: [6.00, 0.00] class: 0 | | | | | | |--- arrival_month > 8.50 | | | | | | | |--- arrival_date <= 14.00 | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | |--- no_of_week_nights <= 2.00 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- no_of_week_nights > 2.00 | | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | |--- arrival_date <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_date > 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | |--- weights: [0.00, 7.00] class: 1 | | | | | | | |--- arrival_date > 14.00 | | | | | | | | |--- avg_price_per_room <= 161.58 | | | | | | | | | |--- lead_time <= 12.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- weights: [0.00, 24.00] class: 1 | | | | | | | | | |--- lead_time > 12.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 1 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- room_type_reserved_Room_Type 1 > 0.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 161.58 | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | |--- avg_price_per_room <= 166.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 166.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | |--- lead_time > 13.50 | | | | |--- avg_price_per_room <= 105.27 | | | | | |--- avg_price_per_room <= 60.19 | | | | | | |--- lead_time <= 84.50 | | | | | | | |--- arrival_date <= 17.50 | | | | | | | | |--- lead_time <= 54.50 | | | | | | | | | |--- lead_time <= 44.00 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | | | |--- lead_time > 44.00 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- lead_time > 54.50 | | | | | | | | | |--- weights: [0.00, 19.00] class: 1 | | | | | | | |--- arrival_date > 17.50 | | | | | | | | |--- weights: [0.00, 32.00] class: 1 | | | | | | |--- lead_time > 84.50 | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | |--- arrival_date <= 19.00 | | | | | | | | | |--- lead_time <= 139.00 | | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | | | |--- lead_time > 139.00 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- arrival_date > 19.00 | | | | | | | | | |--- lead_time <= 87.50 | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- lead_time > 87.50 | | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | |--- avg_price_per_room <= 59.43 | | | | | | | | | |--- weights: [0.00, 16.00] class: 1 | | | | | | | | |--- avg_price_per_room > 59.43 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- avg_price_per_room > 60.19 | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | |--- lead_time <= 25.50 | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | |--- weights: [0.00, 8.00] class: 1 | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | |--- arrival_date <= 25.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_date > 25.50 | | | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | |--- weights: [0.00, 18.00] class: 1 | | | | | | | |--- lead_time > 25.50 | | | | | | | | |--- required_car_parking_space <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 87.97 | | | | | | | | | | |--- arrival_date <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_date > 4.50 | | | | | | | | | | | |--- truncated branch of depth 14 | | | | | | | | | |--- avg_price_per_room > 87.97 | | | | | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- required_car_parking_space > 0.50 | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | |--- lead_time <= 60.50 | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | |--- arrival_date <= 8.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- arrival_date > 8.00 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- lead_time > 60.50 | | | | | | | | | |--- avg_price_per_room <= 80.72 | | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- avg_price_per_room > 80.72 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | |--- lead_time <= 28.50 | | | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | | | | | |--- lead_time > 28.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | | |--- truncated branch of depth 15 | | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | |--- lead_time <= 33.50 | | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 17.00] class: 1 | | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | |--- lead_time > 33.50 | | | | | | | | | | |--- avg_price_per_room <= 71.80 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- avg_price_per_room > 71.80 | | | | | | | | | | | |--- truncated branch of depth 27 | | | | |--- avg_price_per_room > 105.27 | | | | | |--- required_car_parking_space <= 0.50 | | | | | | |--- arrival_year <= 2017.50 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | | |--- arrival_date <= 20.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 20.50 | | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | |--- arrival_date <= 30.50 | | | | | | | | | | |--- weights: [0.00, 27.00] class: 1 | | | | | | | | | |--- arrival_date > 30.50 | | | | | | | | | | |--- lead_time <= 25.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- lead_time > 25.00 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | |--- weights: [13.00, 0.00] class: 0 | | | | | | |--- arrival_year > 2017.50 | | | | | | | |--- arrival_month <= 10.50 | | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 144.76 | | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | | |--- truncated branch of depth 21 | | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | | |--- truncated branch of depth 18 | | | | | | | | | |--- avg_price_per_room > 144.76 | | | | | | | | | | |--- lead_time <= 91.50 | | | | | | | | | | | |--- truncated branch of depth 18 | | | | | | | | | | |--- lead_time > 91.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | | | |--- avg_price_per_room <= 175.71 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- avg_price_per_room > 175.71 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 26.50 | | | | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | | | | |--- arrival_month > 10.50 | | | | | | | | |--- lead_time <= 46.00 | | | | | | | | | |--- avg_price_per_room <= 168.06 | | | | | | | | | | |--- avg_price_per_room <= 147.95 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- avg_price_per_room > 147.95 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- avg_price_per_room > 168.06 | | | | | | | | | | |--- arrival_date <= 2.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 2.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- lead_time > 46.00 | | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | | |--- avg_price_per_room <= 175.65 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- avg_price_per_room > 175.65 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | |--- required_car_parking_space > 0.50 | | | | | | |--- no_of_weekend_nights <= 3.00 | | | | | | | |--- weights: [0.00, 46.00] class: 1 | | | | | | |--- no_of_weekend_nights > 3.00 | | | | | | | |--- weights: [1.00, 0.00] class: 0 | |--- no_of_special_requests > 0.50 | | |--- no_of_special_requests <= 1.50 | | | |--- market_segment_type_Online <= 0.50 | | | | |--- lead_time <= 102.50 | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | |--- no_of_weekend_nights <= 4.00 | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | |--- lead_time <= 91.50 | | | | | | | | | |--- avg_price_per_room <= 129.50 | | | | | | | | | | |--- weights: [0.00, 903.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 129.50 | | | | | | | | | | |--- avg_price_per_room <= 131.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 131.50 | | | | | | | | | | | |--- weights: [0.00, 29.00] class: 1 | | | | | | | | |--- lead_time > 91.50 | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | |--- weights: [0.00, 44.00] class: 1 | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | |--- arrival_date <= 16.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 16.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | |--- avg_price_per_room <= 164.79 | | | | | | | | | |--- avg_price_per_room <= 138.55 | | | | | | | | | | |--- weights: [0.00, 11.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 138.55 | | | | | | | | | | |--- lead_time <= 23.00 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- lead_time > 23.00 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- avg_price_per_room > 164.79 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- no_of_weekend_nights > 4.00 | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | |--- lead_time <= 63.00 | | | | | | | |--- market_segment_type_Corporate <= 0.50 | | | | | | | | |--- weights: [0.00, 18.00] class: 1 | | | | | | | |--- market_segment_type_Corporate > 0.50 | | | | | | | | |--- lead_time <= 12.50 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- lead_time > 12.50 | | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | | | |--- lead_time > 63.00 | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | |--- lead_time > 102.50 | | | | | |--- no_of_week_nights <= 2.50 | | | | | | |--- lead_time <= 105.00 | | | | | | | |--- avg_price_per_room <= 67.65 | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- avg_price_per_room > 67.65 | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | |--- lead_time > 105.00 | | | | | | | |--- avg_price_per_room <= 83.39 | | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | | | |--- arrival_month > 3.50 | | | | | | | | | |--- arrival_date <= 6.50 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- arrival_date > 6.50 | | | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 83.39 | | | | | | | | |--- avg_price_per_room <= 141.25 | | | | | | | | | |--- lead_time <= 143.50 | | | | | | | | | | |--- arrival_date <= 25.00 | | | | | | | | | | | |--- weights: [0.00, 24.00] class: 1 | | | | | | | | | | |--- arrival_date > 25.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- lead_time > 143.50 | | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- avg_price_per_room > 141.25 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- no_of_week_nights > 2.50 | | | | | | |--- avg_price_per_room <= 169.69 | | | | | | | |--- avg_price_per_room <= 122.00 | | | | | | | | |--- avg_price_per_room <= 97.33 | | | | | | | | | |--- weights: [0.00, 48.00] class: 1 | | | | | | | | |--- avg_price_per_room > 97.33 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- weights: [1.00, 1.00] class: 0 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- weights: [0.00, 12.00] class: 1 | | | | | | | |--- avg_price_per_room > 122.00 | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | |--- avg_price_per_room > 169.69 | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | |--- market_segment_type_Online > 0.50 | | | | |--- lead_time <= 8.50 | | | | | |--- lead_time <= 4.50 | | | | | | |--- no_of_week_nights <= 10.00 | | | | | | | |--- avg_price_per_room <= 157.93 | | | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | | | | |--- truncated branch of depth 14 | | | | | | | | | | |--- arrival_date > 26.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- arrival_date > 27.50 | | | | | | | | | | |--- weights: [0.00, 75.00] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | |--- lead_time <= 2.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- lead_time > 2.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- avg_price_per_room > 157.93 | | | | | | | | |--- avg_price_per_room <= 158.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 158.50 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | | |--- avg_price_per_room <= 179.28 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- avg_price_per_room > 179.28 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | | |--- avg_price_per_room <= 173.78 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 173.78 | | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | |--- no_of_week_nights > 10.00 | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | |--- lead_time > 4.50 | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | |--- avg_price_per_room <= 118.50 | | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | | |--- arrival_date <= 13.50 | | | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- arrival_date > 13.50 | | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- arrival_month > 8.50 | | | | | | | | | |--- weights: [0.00, 90.00] class: 1 | | | | | | | |--- avg_price_per_room > 118.50 | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | |--- arrival_date <= 15.50 | | | | | | | | | | |--- lead_time <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | | |--- lead_time > 7.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_date > 15.50 | | | | | | | | | | |--- avg_price_per_room <= 120.30 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 120.30 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- repeated_guest <= 0.50 | | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | | | |--- repeated_guest > 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- arrival_date <= 28.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- arrival_date > 28.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | |--- avg_price_per_room <= 94.48 | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 94.48 | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | |--- lead_time > 8.50 | | | | | |--- required_car_parking_space <= 0.50 | | | | | | |--- avg_price_per_room <= 127.62 | | | | | | | |--- no_of_weekend_nights <= 2.50 | | | | | | | | |--- lead_time <= 43.50 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 95.00] class: 1 | | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | | |--- truncated branch of depth 22 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- weights: [0.00, 139.00] class: 1 | | | | | | | | |--- lead_time > 43.50 | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | | | | |--- truncated branch of depth 19 | | | | | | | | | | |--- arrival_month > 8.50 | | | | | | | | | | | |--- truncated branch of depth 20 | | | | | | | |--- no_of_weekend_nights > 2.50 | | | | | | | | |--- avg_price_per_room <= 119.12 | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | |--- no_of_week_nights <= 8.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- no_of_week_nights > 8.50 | | | | | | | | | | | |--- weights: [13.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 119.12 | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | |--- avg_price_per_room > 127.62 | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | |--- avg_price_per_room <= 177.15 | | | | | | | | | | |--- lead_time <= 11.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- lead_time > 11.50 | | | | | | | | | | | |--- truncated branch of depth 16 | | | | | | | | | |--- avg_price_per_room > 177.15 | | | | | | | | | | |--- arrival_date <= 7.50 | | | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | | | | |--- arrival_date > 7.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | | | |--- lead_time <= 23.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- lead_time > 23.50 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | | | |--- arrival_date > 27.50 | | | | | | | | | | |--- lead_time <= 88.00 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- lead_time > 88.00 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | |--- arrival_month > 8.50 | | | | | | | | |--- lead_time <= 141.50 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | | |--- truncated branch of depth 19 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- lead_time <= 100.50 | | | | | | | | | | | |--- weights: [0.00, 53.00] class: 1 | | | | | | | | | | |--- lead_time > 100.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- lead_time > 141.50 | | | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | |--- required_car_parking_space > 0.50 | | | | | | |--- no_of_weekend_nights <= 3.00 | | | | | | | |--- lead_time <= 150.00 | | | | | | | | |--- weights: [0.00, 194.00] class: 1 | | | | | | | |--- lead_time > 150.00 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- no_of_weekend_nights > 3.00 | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | |--- no_of_special_requests > 1.50 | | | |--- lead_time <= 90.50 | | | | |--- no_of_week_nights <= 3.50 | | | | | |--- weights: [0.00, 2294.00] class: 1 | | | | |--- no_of_week_nights > 3.50 | | | | | |--- no_of_week_nights <= 9.50 | | | | | | |--- no_of_special_requests <= 2.50 | | | | | | | |--- avg_price_per_room <= 80.80 | | | | | | | | |--- avg_price_per_room <= 71.75 | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | | |--- avg_price_per_room > 71.75 | | | | | | | | | |--- lead_time <= 13.50 | | | | | | | | | | |--- weights: [0.00, 6.00] class: 1 | | | | | | | | | |--- lead_time > 13.50 | | | | | | | | | | |--- arrival_date <= 6.50 | | | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | | | |--- arrival_date > 6.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | |--- avg_price_per_room > 80.80 | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | |--- lead_time <= 6.50 | | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 29.00] class: 1 | | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- lead_time > 6.50 | | | | | | | | | | |--- lead_time <= 19.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- lead_time > 19.50 | | | | | | | | | | | |--- truncated branch of depth 12 | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | |--- weights: [0.00, 32.00] class: 1 | | | | | | |--- no_of_special_requests > 2.50 | | | | | | | |--- weights: [0.00, 74.00] class: 1 | | | | | |--- no_of_week_nights > 9.50 | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | |--- lead_time > 90.50 | | | | |--- arrival_month <= 8.50 | | | | | |--- lead_time <= 150.50 | | | | | | |--- arrival_year <= 2017.50 | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | |--- arrival_date <= 4.50 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- arrival_date > 4.50 | | | | | | | | | |--- arrival_date <= 26.00 | | | | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 26.00 | | | | | | | | | | |--- arrival_date <= 28.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- arrival_date > 28.00 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | |--- arrival_month > 7.50 | | | | | | | | |--- arrival_date <= 14.00 | | | | | | | | | |--- weights: [0.00, 11.00] class: 1 | | | | | | | | |--- arrival_date > 14.00 | | | | | | | | | |--- no_of_week_nights <= 4.00 | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | |--- no_of_week_nights > 4.00 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | |--- arrival_year > 2017.50 | | | | | | | |--- avg_price_per_room <= 157.65 | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | |--- arrival_date <= 29.50 | | | | | | | | | | |--- arrival_date <= 25.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_date > 25.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- arrival_date > 29.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | |--- avg_price_per_room > 157.65 | | | | | | | | |--- no_of_children <= 2.50 | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | |--- arrival_date <= 10.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 10.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | |--- lead_time <= 97.00 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- lead_time > 97.00 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | |--- no_of_children > 2.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- lead_time > 150.50 | | | | | | |--- avg_price_per_room <= 103.50 | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | |--- avg_price_per_room > 103.50 | | | | | | | |--- weights: [5.00, 0.00] class: 0 | | | | |--- arrival_month > 8.50 | | | | | |--- no_of_special_requests <= 2.50 | | | | | | |--- avg_price_per_room <= 153.15 | | | | | | | |--- avg_price_per_room <= 73.53 | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | |--- arrival_date <= 4.50 | | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 4.50 | | | | | | | | | | |--- lead_time <= 121.50 | | | | | | | | | | | |--- weights: [0.00, 15.00] class: 1 | | | | | | | | | | |--- lead_time > 121.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 73.53 | | | | | | | | |--- avg_price_per_room <= 90.42 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- lead_time <= 123.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 123.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- arrival_date <= 21.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 21.50 | | | | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 90.42 | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | |--- lead_time <= 148.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 148.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | |--- avg_price_per_room > 153.15 | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | |--- lead_time <= 148.50 | | | | | | | | | |--- weights: [0.00, 17.00] class: 1 | | | | | | | | |--- lead_time > 148.50 | | | | | | | | | |--- avg_price_per_room <= 163.03 | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 163.03 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- arrival_date > 26.50 | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | |--- no_of_special_requests > 2.50 | | | | | | |--- weights: [0.00, 55.00] class: 1 |--- lead_time > 151.50 | |--- avg_price_per_room <= 100.04 | | |--- no_of_special_requests <= 0.50 | | | |--- market_segment_type_Online <= 0.50 | | | | |--- no_of_adults <= 1.50 | | | | | |--- lead_time <= 163.50 | | | | | | |--- lead_time <= 162.50 | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | | | |--- lead_time > 162.50 | | | | | | | |--- weights: [19.00, 0.00] class: 0 | | | | | |--- lead_time > 163.50 | | | | | | |--- lead_time <= 341.00 | | | | | | | |--- lead_time <= 173.00 | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- weights: [6.00, 65.00] class: 1 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | |--- arrival_month <= 5.00 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- arrival_month > 5.00 | | | | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | | | |--- lead_time > 173.00 | | | | | | | | |--- avg_price_per_room <= 98.00 | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | |--- arrival_date <= 7.50 | | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 7.50 | | | | | | | | | | | |--- weights: [0.00, 10.00] class: 1 | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | |--- avg_price_per_room <= 55.21 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 55.21 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | |--- avg_price_per_room > 98.00 | | | | | | | | | |--- arrival_date <= 13.50 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | |--- arrival_date > 13.50 | | | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | |--- lead_time > 341.00 | | | | | | | |--- no_of_week_nights <= 4.00 | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | |--- avg_price_per_room <= 80.00 | | | | | | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 80.00 | | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | | |--- weights: [3.00, 5.00] class: 1 | | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | |--- no_of_week_nights > 4.00 | | | | | | | | |--- avg_price_per_room <= 88.33 | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 88.33 | | | | | | | | | |--- weights: [1.00, 1.00] class: 0 | | | | |--- no_of_adults > 1.50 | | | | | |--- avg_price_per_room <= 84.58 | | | | | | |--- lead_time <= 244.00 | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | |--- lead_time <= 166.50 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- lead_time > 166.50 | | | | | | | | | | |--- avg_price_per_room <= 69.34 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- avg_price_per_room > 69.34 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | |--- weights: [0.00, 26.00] class: 1 | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | |--- avg_price_per_room <= 66.50 | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | |--- arrival_date <= 16.00 | | | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 16.00 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | |--- avg_price_per_room <= 28.57 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 28.57 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 66.50 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- avg_price_per_room <= 75.75 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- avg_price_per_room > 75.75 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | |--- lead_time > 244.00 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- weights: [0.00, 37.00] class: 1 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- avg_price_per_room <= 76.00 | | | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- avg_price_per_room > 76.00 | | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | | |--- weights: [0.00, 21.00] class: 1 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- weights: [0.00, 38.00] class: 1 | | | | | |--- avg_price_per_room > 84.58 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | |--- room_type_reserved_Room_Type 1 <= 0.50 | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 1 > 0.50 | | | | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | |--- arrival_month <= 6.50 | | | | | | | | | |--- weights: [15.00, 0.00] class: 0 | | | | | | | | |--- arrival_month > 6.50 | | | | | | | | | |--- weights: [0.00, 16.00] class: 1 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | |--- market_segment_type_Online > 0.50 | | | | |--- avg_price_per_room <= 35.17 | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | |--- arrival_date <= 12.50 | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- arrival_date > 12.50 | | | | | | | |--- arrival_date <= 19.00 | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | | | |--- arrival_date > 19.00 | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | |--- avg_price_per_room > 35.17 | | | | | |--- arrival_month <= 11.50 | | | | | | |--- weights: [561.00, 0.00] class: 0 | | | | | |--- arrival_month > 11.50 | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- arrival_date > 3.50 | | | | | | | | |--- lead_time <= 214.50 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | |--- lead_time > 214.50 | | | | | | | | | |--- weights: [7.00, 0.00] class: 0 | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | |--- avg_price_per_room <= 76.87 | | | | | | | | | |--- weights: [9.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 76.87 | | | | | | | | | |--- lead_time <= 270.00 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- lead_time > 270.00 | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | |--- weights: [60.00, 0.00] class: 0 | | |--- no_of_special_requests > 0.50 | | | |--- no_of_weekend_nights <= 0.50 | | | | |--- lead_time <= 180.50 | | | | | |--- lead_time <= 159.50 | | | | | | |--- arrival_month <= 8.50 | | | | | | | |--- avg_price_per_room <= 98.81 | | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | | | | |--- avg_price_per_room > 98.81 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- arrival_month > 8.50 | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | |--- lead_time <= 156.50 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- lead_time > 156.50 | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- arrival_date > 23.50 | | | | | | | | |--- weights: [4.00, 0.00] class: 0 | | | | | |--- lead_time > 159.50 | | | | | | |--- arrival_date <= 1.50 | | | | | | | |--- lead_time <= 176.50 | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | |--- lead_time > 176.50 | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | |--- arrival_date > 1.50 | | | | | | | |--- no_of_adults <= 0.50 | | | | | | | | |--- avg_price_per_room <= 96.08 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 96.08 | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- no_of_adults > 0.50 | | | | | | | | |--- weights: [0.00, 57.00] class: 1 | | | | |--- lead_time > 180.50 | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | |--- no_of_adults <= 2.50 | | | | | | | |--- lead_time <= 356.00 | | | | | | | | |--- lead_time <= 302.50 | | | | | | | | | |--- weights: [0.00, 16.00] class: 1 | | | | | | | | |--- lead_time > 302.50 | | | | | | | | | |--- no_of_special_requests <= 1.50 | | | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | | | | | | |--- no_of_special_requests > 1.50 | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- lead_time > 356.00 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | |--- no_of_adults > 2.50 | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | |--- market_segment_type_Online > 0.50 | | | | | | |--- no_of_special_requests <= 2.50 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- avg_price_per_room <= 44.12 | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | |--- avg_price_per_room > 44.12 | | | | | | | | | |--- weights: [137.00, 0.00] class: 0 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- lead_time <= 300.00 | | | | | | | | | |--- lead_time <= 221.50 | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | | | |--- lead_time > 221.50 | | | | | | | | | | |--- lead_time <= 272.00 | | | | | | | | | | | |--- weights: [0.00, 8.00] class: 1 | | | | | | | | | | |--- lead_time > 272.00 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- lead_time > 300.00 | | | | | | | | | |--- weights: [6.00, 0.00] class: 0 | | | | | | |--- no_of_special_requests > 2.50 | | | | | | | |--- weights: [0.00, 12.00] class: 1 | | | |--- no_of_weekend_nights > 0.50 | | | | |--- market_segment_type_Online <= 0.50 | | | | | |--- lead_time <= 348.50 | | | | | | |--- no_of_week_nights <= 5.50 | | | | | | | |--- arrival_date <= 30.00 | | | | | | | | |--- weights: [0.00, 151.00] class: 1 | | | | | | | |--- arrival_date > 30.00 | | | | | | | | |--- no_of_week_nights <= 3.00 | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | |--- no_of_week_nights > 3.00 | | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | | | |--- no_of_week_nights > 5.50 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | |--- lead_time > 348.50 | | | | | | |--- avg_price_per_room <= 58.50 | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | |--- avg_price_per_room > 58.50 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | |--- weights: [2.00, 6.00] class: 1 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | |--- weights: [1.00, 2.00] class: 1 | | | | |--- market_segment_type_Online > 0.50 | | | | | |--- no_of_week_nights <= 9.50 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | |--- avg_price_per_room <= 81.12 | | | | | | | | | |--- lead_time <= 157.50 | | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | | |--- lead_time > 157.50 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 65.00] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- avg_price_per_room > 81.12 | | | | | | | | | |--- no_of_week_nights <= 6.50 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | | | |--- no_of_week_nights > 6.50 | | | | | | | | | | |--- lead_time <= 204.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 204.50 | | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | | |--- arrival_date > 27.50 | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | |--- lead_time <= 224.50 | | | | | | | | | | |--- lead_time <= 175.50 | | | | | | | | | | | |--- weights: [0.00, 1.00] class: 1 | | | | | | | | | | |--- lead_time > 175.50 | | | | | | | | | | | |--- weights: [10.00, 0.00] class: 0 | | | | | | | | | |--- lead_time > 224.50 | | | | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | |--- lead_time <= 269.00 | | | | | | | | | | |--- lead_time <= 176.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 176.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- lead_time > 269.00 | | | | | | | | | | |--- weights: [3.00, 0.00] class: 0 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- arrival_date <= 14.50 | | | | | | | | |--- arrival_date <= 3.00 | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | |--- arrival_date > 3.00 | | | | | | | | | |--- avg_price_per_room <= 64.43 | | | | | | | | | | |--- arrival_date <= 8.50 | | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | | |--- arrival_date > 8.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 64.43 | | | | | | | | | | |--- weights: [0.00, 9.00] class: 1 | | | | | | | |--- arrival_date > 14.50 | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | |--- no_of_special_requests <= 1.50 | | | | | | | | | | |--- weights: [8.00, 0.00] class: 0 | | | | | | | | | |--- no_of_special_requests > 1.50 | | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | | |--- weights: [1.00, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | |--- avg_price_per_room <= 55.92 | | | | | | | | | | |--- weights: [0.00, 3.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 55.92 | | | | | | | | | | |--- avg_price_per_room <= 79.94 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- avg_price_per_room > 79.94 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | |--- no_of_week_nights > 9.50 | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | |--- weights: [7.00, 0.00] class: 0 | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | |--- weights: [0.00, 1.00] class: 1 | |--- avg_price_per_room > 100.04 | | |--- arrival_month <= 11.50 | | | |--- no_of_special_requests <= 2.50 | | | | |--- weights: [2245.00, 0.00] class: 0 | | | |--- no_of_special_requests > 2.50 | | | | |--- weights: [0.00, 34.00] class: 1 | | |--- arrival_month > 11.50 | | | |--- no_of_special_requests <= 0.50 | | | | |--- weights: [0.00, 51.00] class: 1 | | | |--- no_of_special_requests > 0.50 | | | | |--- arrival_date <= 24.50 | | | | | |--- weights: [0.00, 5.00] class: 1 | | | | |--- arrival_date > 24.50 | | | | | |--- room_type_reserved_Room_Type 1 <= 0.50 | | | | | | |--- lead_time <= 172.50 | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | |--- weights: [0.00, 2.00] class: 1 | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | |--- weights: [2.00, 0.00] class: 0 | | | | | | |--- lead_time > 172.50 | | | | | | | |--- weights: [14.00, 0.00] class: 0 | | | | | |--- room_type_reserved_Room_Type 1 > 0.50 | | | | | | |--- lead_time <= 285.00 | | | | | | | |--- weights: [0.00, 4.00] class: 1 | | | | | | |--- lead_time > 285.00 | | | | | | | |--- weights: [1.00, 0.00] class: 0
Features like lead_time, no_of_special_requests, and market_segment_type appear early in the tree, indicating their strong influence on the cancelation
# importance of features in the tree building ( The importance of a feature is computed as the
#(normalized) total reduction of the criterion brought by that feature. It is also known as the Gini importance )
print (pd.DataFrame(model0.feature_importances_, columns = ["Imp"], index = X_train_1.columns).sort_values(by = 'Imp', ascending = False))
Imp lead_time 0.358790 avg_price_per_room 0.166805 market_segment_type_Online 0.094208 arrival_date 0.079456 no_of_special_requests 0.068251 arrival_month 0.065287 no_of_week_nights 0.046546 no_of_weekend_nights 0.040914 no_of_adults 0.023795 arrival_year 0.012419 type_of_meal_plan_Meal Plan 1 0.008264 required_car_parking_space 0.007264 room_type_reserved_Room_Type 1 0.006579 room_type_reserved_Room_Type 4 0.004439 no_of_children 0.004106 type_of_meal_plan_Not Selected 0.002898 type_of_meal_plan_Meal Plan 2 0.002819 market_segment_type_Offline 0.001660 room_type_reserved_Room_Type 2 0.001513 room_type_reserved_Room_Type 5 0.000896 market_segment_type_Corporate 0.000659 no_of_previous_bookings_not_canceled 0.000650 market_segment_type_Aviation 0.000407 room_type_reserved_Room_Type 7 0.000381 no_of_previous_cancellations 0.000379 repeated_guest 0.000319 room_type_reserved_Room_Type 6 0.000294 room_type_reserved_Room_Type 3 0.000000 type_of_meal_plan_Meal Plan 3 0.000000 market_segment_type_Complementary 0.000000
importances = model0.feature_importances_
indices = np.argsort(importances)
plt.figure(figsize=(12,12))
plt.title('Feature Importances')
plt.barh(range(len(indices)), importances[indices], color='violet', align='center')
plt.yticks(range(len(indices)), [feature_name[i] for i in indices])
plt.xlabel('Relative Importance')
plt.show()
Train data-set
model1=DecisionTreeClassifier(random_state=1,class_weight="balanced")
model1.fit(X_train_1,y_train_1)
DecisionTreeClassifier(class_weight='balanced', random_state=1)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
DecisionTreeClassifier(class_weight='balanced', random_state=1)
decision_tree_perf_train_with_weigth= model_performance_classification_sklearn(model1,X_train_1,y_train_1)
decision_tree_perf_train_with_weigth
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.992832 | 0.991794 | 0.997524 | 0.994651 |
confusion_matrix_sklearn(model1,X_test_1,y_test_1)
Test dataset with weigth
decision_tree_perf_test_with_weigth= model_performance_classification_sklearn(model1,X_test_1,y_test_1)
decision_tree_perf_test_with_weigth
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.86294 | 0.890362 | 0.904722 | 0.897485 |
confusion_matrix_sklearn(model1,X_test_1,y_test_1)
plt.figure(figsize=(15,10))
tree.plot_tree(model1,feature_names=feature_name,filled=True,fontsize=9,node_ids=True)
plt.show()
print(tree.export_text(model1,feature_names=feature_name,show_weights=True))
|--- lead_time <= 151.50 | |--- no_of_special_requests <= 0.50 | | |--- market_segment_type_Online <= 0.50 | | | |--- lead_time <= 90.50 | | | | |--- no_of_weekend_nights <= 0.50 | | | | | |--- avg_price_per_room <= 179.47 | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | |--- lead_time <= 16.50 | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | |--- repeated_guest <= 0.50 | | | | | | | | | | |--- avg_price_per_room <= 162.09 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | | | | |--- avg_price_per_room > 162.09 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- repeated_guest > 0.50 | | | | | | | | | | |--- weights: [0.00, 113.86] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | |--- avg_price_per_room <= 83.00 | | | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | | | |--- avg_price_per_room > 83.00 | | | | | | | | | | |--- lead_time <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- lead_time > 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | |--- lead_time > 16.50 | | | | | | | | |--- avg_price_per_room <= 135.00 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- avg_price_per_room <= 119.50 | | | | | | | | | | | |--- truncated branch of depth 14 | | | | | | | | | | |--- avg_price_per_room > 119.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- weights: [0.00, 23.81] class: 1 | | | | | | | | |--- avg_price_per_room > 135.00 | | | | | | | | | |--- weights: [12.19, 0.00] class: 0 | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | |--- weights: [0.00, 1285.96] class: 1 | | | | | |--- avg_price_per_room > 179.47 | | | | | | |--- lead_time <= 22.00 | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | |--- arrival_date <= 23.00 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_date > 23.00 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- lead_time > 22.00 | | | | | | | |--- lead_time <= 37.50 | | | | | | | | |--- weights: [27.43, 0.00] class: 0 | | | | | | | |--- lead_time > 37.50 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | |--- no_of_weekend_nights > 0.50 | | | | | |--- lead_time <= 68.50 | | | | | | |--- arrival_month <= 9.50 | | | | | | | |--- avg_price_per_room <= 63.29 | | | | | | | | |--- arrival_date <= 20.50 | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | |--- weights: [0.00, 45.40] class: 1 | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | |--- arrival_month <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_month > 2.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- arrival_date > 20.50 | | | | | | | | | |--- avg_price_per_room <= 59.75 | | | | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 23.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- avg_price_per_room > 59.75 | | | | | | | | | | |--- lead_time <= 44.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 44.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- avg_price_per_room > 63.29 | | | | | | | | |--- no_of_weekend_nights <= 3.50 | | | | | | | | | |--- lead_time <= 59.50 | | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | |--- lead_time > 59.50 | | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | | |--- weights: [0.00, 22.33] class: 1 | | | | | | | | |--- no_of_weekend_nights > 3.50 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- weights: [16.76, 0.00] class: 0 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | |--- arrival_month > 9.50 | | | | | | | |--- market_segment_type_Aviation <= 0.50 | | | | | | | | |--- no_of_weekend_nights <= 5.00 | | | | | | | | | |--- lead_time <= 65.50 | | | | | | | | | | |--- avg_price_per_room <= 64.90 | | | | | | | | | | | |--- weights: [0.00, 93.77] class: 1 | | | | | | | | | | |--- avg_price_per_room > 64.90 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | |--- lead_time > 65.50 | | | | | | | | | | |--- arrival_month <= 10.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_month > 10.50 | | | | | | | | | | | |--- weights: [0.00, 8.19] class: 1 | | | | | | | | |--- no_of_weekend_nights > 5.00 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- market_segment_type_Aviation > 0.50 | | | | | | | | |--- arrival_date <= 7.50 | | | | | | | | | |--- arrival_date <= 5.00 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_date > 5.00 | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | |--- arrival_date > 7.50 | | | | | | | | | |--- lead_time <= 20.00 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 8.93] class: 1 | | | | | | | | | |--- lead_time > 20.00 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | |--- lead_time > 68.50 | | | | | | |--- avg_price_per_room <= 99.98 | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | |--- avg_price_per_room <= 62.50 | | | | | | | | | |--- weights: [0.00, 15.63] class: 1 | | | | | | | | |--- avg_price_per_room > 62.50 | | | | | | | | | |--- avg_price_per_room <= 80.38 | | | | | | | | | | |--- lead_time <= 81.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- lead_time > 81.50 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | |--- avg_price_per_room > 80.38 | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | |--- arrival_month > 3.50 | | | | | | | | |--- lead_time <= 71.50 | | | | | | | | | |--- arrival_month <= 8.00 | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 8.00 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- lead_time > 71.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- weights: [0.00, 25.30] class: 1 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- lead_time <= 87.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- lead_time > 87.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | |--- avg_price_per_room > 99.98 | | | | | | | |--- lead_time <= 81.00 | | | | | | | | |--- avg_price_per_room <= 123.25 | | | | | | | | | |--- room_type_reserved_Room_Type 6 <= 0.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- weights: [80.76, 0.00] class: 0 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- room_type_reserved_Room_Type 6 > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- avg_price_per_room > 123.25 | | | | | | | | | |--- weights: [0.00, 7.44] class: 1 | | | | | | | |--- lead_time > 81.00 | | | | | | | | |--- lead_time <= 88.50 | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | |--- weights: [0.00, 12.65] class: 1 | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- lead_time > 88.50 | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | |--- lead_time > 90.50 | | | | |--- lead_time <= 117.50 | | | | | |--- avg_price_per_room <= 93.58 | | | | | | |--- avg_price_per_room <= 75.07 | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | |--- avg_price_per_room <= 58.75 | | | | | | | | | |--- weights: [0.00, 6.70] class: 1 | | | | | | | | |--- avg_price_per_room > 58.75 | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | | |--- arrival_date <= 11.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- weights: [0.00, 31.26] class: 1 | | | | | | | | | |--- arrival_date > 11.50 | | | | | | | | | | |--- arrival_date <= 13.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- arrival_date > 13.50 | | | | | | | | | | | |--- weights: [0.00, 8.93] class: 1 | | | | | | | | |--- arrival_date > 23.50 | | | | | | | | | |--- arrival_month <= 9.00 | | | | | | | | | | |--- avg_price_per_room <= 73.62 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- avg_price_per_room > 73.62 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | | |--- arrival_month > 9.00 | | | | | | | | | | |--- weights: [0.00, 8.93] class: 1 | | | | | | |--- avg_price_per_room > 75.07 | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | |--- avg_price_per_room <= 88.50 | | | | | | | | | |--- lead_time <= 102.00 | | | | | | | | | | |--- avg_price_per_room <= 80.25 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 80.25 | | | | | | | | | | | |--- weights: [0.00, 24.56] class: 1 | | | | | | | | | |--- lead_time > 102.00 | | | | | | | | | | |--- weights: [0.00, 33.49] class: 1 | | | | | | | | |--- avg_price_per_room > 88.50 | | | | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- arrival_month > 3.50 | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | |--- avg_price_per_room <= 80.38 | | | | | | | | | | |--- weights: [18.29, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 80.38 | | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | |--- arrival_date <= 15.50 | | | | | | | | | | |--- avg_price_per_room <= 79.28 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 79.28 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- arrival_date > 15.50 | | | | | | | | | | |--- avg_price_per_room <= 85.38 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- avg_price_per_room > 85.38 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | |--- avg_price_per_room > 93.58 | | | | | | |--- arrival_date <= 11.50 | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | |--- lead_time <= 110.50 | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- lead_time > 110.50 | | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | | |--- avg_price_per_room <= 116.50 | | | | | | | | | | | |--- weights: [12.19, 4.47] class: 0 | | | | | | | | | | |--- avg_price_per_room > 116.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | | |--- weights: [15.24, 0.00] class: 0 | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | |--- avg_price_per_room <= 125.00 | | | | | | | | | |--- avg_price_per_room <= 95.83 | | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- avg_price_per_room > 95.83 | | | | | | | | | | |--- lead_time <= 112.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 112.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 125.00 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- arrival_date > 11.50 | | | | | | | |--- avg_price_per_room <= 102.09 | | | | | | | | |--- arrival_date <= 14.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- arrival_date > 14.50 | | | | | | | | | |--- arrival_month <= 2.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_month > 2.50 | | | | | | | | | | |--- avg_price_per_room <= 95.44 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- avg_price_per_room > 95.44 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- avg_price_per_room > 102.09 | | | | | | | | |--- avg_price_per_room <= 109.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- avg_price_per_room <= 108.50 | | | | | | | | | | | |--- weights: [16.76, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 108.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- arrival_date <= 18.50 | | | | | | | | | | | |--- weights: [0.00, 32.00] class: 1 | | | | | | | | | | |--- arrival_date > 18.50 | | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | |--- avg_price_per_room > 109.50 | | | | | | | | | |--- avg_price_per_room <= 124.25 | | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | | |--- weights: [74.67, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- avg_price_per_room > 124.25 | | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | |--- lead_time > 117.50 | | | | | |--- no_of_week_nights <= 1.50 | | | | | | |--- arrival_date <= 7.50 | | | | | | | |--- weights: [0.00, 38.70] class: 1 | | | | | | |--- arrival_date > 7.50 | | | | | | | |--- avg_price_per_room <= 93.58 | | | | | | | | |--- avg_price_per_room <= 65.38 | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 65.38 | | | | | | | | | |--- avg_price_per_room <= 89.88 | | | | | | | | | | |--- weights: [0.00, 18.60] class: 1 | | | | | | | | | |--- avg_price_per_room > 89.88 | | | | | | | | | | |--- arrival_month <= 10.00 | | | | | | | | | | | |--- weights: [3.05, 5.95] class: 1 | | | | | | | | | | |--- arrival_month > 10.00 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- avg_price_per_room > 93.58 | | | | | | | | |--- arrival_date <= 28.00 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- arrival_date <= 24.00 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 24.00 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | | | |--- weights: [28.95, 0.00] class: 0 | | | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | | | |--- weights: [1.52, 0.74] class: 0 | | | | | | | | |--- arrival_date > 28.00 | | | | | | | | | |--- weights: [3.05, 10.42] class: 1 | | | | | |--- no_of_week_nights > 1.50 | | | | | | |--- no_of_adults <= 1.50 | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | |--- weights: [0.00, 83.35] class: 1 | | | | | | | |--- arrival_date > 26.50 | | | | | | | | |--- arrival_date <= 28.50 | | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | | | |--- arrival_date > 28.50 | | | | | | | | | |--- avg_price_per_room <= 74.00 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- avg_price_per_room > 74.00 | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | |--- no_of_adults > 1.50 | | | | | | | |--- lead_time <= 125.50 | | | | | | | | |--- avg_price_per_room <= 90.85 | | | | | | | | | |--- avg_price_per_room <= 87.50 | | | | | | | | | | |--- arrival_date <= 14.00 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | | |--- arrival_date > 14.00 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- avg_price_per_room > 87.50 | | | | | | | | | | |--- weights: [15.24, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 90.85 | | | | | | | | | |--- weights: [0.00, 11.16] class: 1 | | | | | | | |--- lead_time > 125.50 | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | |--- arrival_date <= 10.50 | | | | | | | | | | |--- avg_price_per_room <= 155.78 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- avg_price_per_room > 155.78 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 10.50 | | | | | | | | | | |--- arrival_month <= 10.00 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- arrival_month > 10.00 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | |--- lead_time <= 128.00 | | | | | | | | | | |--- avg_price_per_room <= 87.08 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | | |--- avg_price_per_room > 87.08 | | | | | | | | | | | |--- weights: [1.52, 4.47] class: 1 | | | | | | | | | |--- lead_time > 128.00 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 59.53] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | |--- market_segment_type_Online > 0.50 | | | |--- lead_time <= 9.50 | | | | |--- arrival_month <= 8.50 | | | | | |--- lead_time <= 3.50 | | | | | | |--- avg_price_per_room <= 134.50 | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | |--- weights: [0.00, 46.88] class: 1 | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | |--- arrival_month <= 2.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | |--- arrival_month > 2.50 | | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | |--- arrival_date <= 27.00 | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | |--- avg_price_per_room <= 76.75 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 76.75 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | |--- lead_time <= 2.50 | | | | | | | | | | | |--- weights: [0.00, 20.09] class: 1 | | | | | | | | | | |--- lead_time > 2.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- arrival_date > 27.00 | | | | | | | | | |--- arrival_month <= 6.50 | | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | | |--- weights: [19.81, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 6.50 | | | | | | | | | | |--- avg_price_per_room <= 92.32 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- avg_price_per_room > 92.32 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | |--- avg_price_per_room > 134.50 | | | | | | | |--- avg_price_per_room <= 136.09 | | | | | | | | |--- arrival_date <= 20.00 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_date > 20.00 | | | | | | | | | |--- weights: [9.14, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 136.09 | | | | | | | | |--- avg_price_per_room <= 178.78 | | | | | | | | | |--- lead_time <= 2.50 | | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- lead_time > 2.50 | | | | | | | | | | |--- no_of_children <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_children > 1.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 178.78 | | | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | |--- arrival_month > 3.50 | | | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | |--- lead_time > 3.50 | | | | | | |--- avg_price_per_room <= 99.38 | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | |--- weights: [0.00, 28.28] class: 1 | | | | | | | |--- arrival_month > 1.50 | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | |--- weights: [0.00, 10.42] class: 1 | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- arrival_date <= 20.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_date > 20.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- avg_price_per_room <= 78.05 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | | | |--- avg_price_per_room > 78.05 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | |--- avg_price_per_room > 99.38 | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | |--- required_car_parking_space <= 0.50 | | | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 12 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- required_car_parking_space > 0.50 | | | | | | | | | |--- avg_price_per_room <= 172.78 | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | | |--- avg_price_per_room > 172.78 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- arrival_date > 23.50 | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | |--- weights: [13.71, 0.00] class: 0 | | | | |--- arrival_month > 8.50 | | | | | |--- avg_price_per_room <= 167.00 | | | | | | |--- arrival_year <= 2017.50 | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | |--- avg_price_per_room <= 117.30 | | | | | | | | | |--- weights: [0.00, 17.86] class: 1 | | | | | | | | |--- avg_price_per_room > 117.30 | | | | | | | | | |--- avg_price_per_room <= 120.07 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 120.07 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | |--- arrival_month > 9.50 | | | | | | | | |--- no_of_previous_cancellations <= 0.50 | | | | | | | | | |--- weights: [0.00, 114.60] class: 1 | | | | | | | | |--- no_of_previous_cancellations > 0.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | |--- arrival_year > 2017.50 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- lead_time <= 1.50 | | | | | | | | | |--- arrival_date <= 28.00 | | | | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 33.49] class: 1 | | | | | | | | | |--- arrival_date > 28.00 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | |--- lead_time > 1.50 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- arrival_date <= 8.00 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- arrival_date > 8.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | | |--- weights: [0.00, 5.95] class: 1 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- weights: [0.00, 43.16] class: 1 | | | | | |--- avg_price_per_room > 167.00 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- arrival_date <= 15.50 | | | | | | | | |--- avg_price_per_room <= 176.17 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- avg_price_per_room > 176.17 | | | | | | | | | |--- weights: [10.67, 0.00] class: 0 | | | | | | | |--- arrival_date > 15.50 | | | | | | | | |--- room_type_reserved_Room_Type 6 <= 0.50 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 6 > 0.50 | | | | | | | | | |--- avg_price_per_room <= 178.28 | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | |--- avg_price_per_room > 178.28 | | | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | |--- lead_time > 9.50 | | | | |--- avg_price_per_room <= 105.27 | | | | | |--- lead_time <= 25.50 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | |--- weights: [0.00, 40.19] class: 1 | | | | | | | |--- arrival_month > 1.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- no_of_adults <= 2.50 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 26.79] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- no_of_adults > 2.50 | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- avg_price_per_room <= 34.62 | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | | |--- avg_price_per_room > 34.62 | | | | | | | | | | |--- lead_time <= 13.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- lead_time > 13.50 | | | | | | | | | | | |--- truncated branch of depth 19 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- weights: [0.00, 73.67] class: 1 | | | | | |--- lead_time > 25.50 | | | | | | |--- avg_price_per_room <= 60.19 | | | | | | | |--- lead_time <= 84.50 | | | | | | | | |--- arrival_date <= 13.50 | | | | | | | | | |--- lead_time <= 54.50 | | | | | | | | | | |--- lead_time <= 36.50 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | | |--- lead_time > 36.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- lead_time > 54.50 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 5.21] class: 1 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- weights: [0.00, 6.70] class: 1 | | | | | | | | |--- arrival_date > 13.50 | | | | | | | | | |--- weights: [0.00, 26.79] class: 1 | | | | | | | |--- lead_time > 84.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- arrival_date <= 27.00 | | | | | | | | | | |--- lead_time <= 131.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- lead_time > 131.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- arrival_date > 27.00 | | | | | | | | | | |--- no_of_week_nights <= 2.00 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- no_of_week_nights > 2.00 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- avg_price_per_room <= 59.43 | | | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | | | |--- avg_price_per_room > 59.43 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- avg_price_per_room > 60.19 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | |--- required_car_parking_space <= 0.50 | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | |--- avg_price_per_room <= 87.97 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | | |--- avg_price_per_room > 87.97 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | |--- arrival_month <= 11.00 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | | | |--- arrival_month > 11.00 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- required_car_parking_space > 0.50 | | | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- lead_time <= 58.00 | | | | | | | | | | |--- lead_time <= 27.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- lead_time > 27.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- lead_time > 58.00 | | | | | | | | | | |--- avg_price_per_room <= 80.72 | | | | | | | | | | | |--- truncated branch of depth 14 | | | | | | | | | | |--- avg_price_per_room > 80.72 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- required_car_parking_space <= 0.50 | | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 16 | | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | | |--- truncated branch of depth 26 | | | | | | | | | |--- required_car_parking_space > 0.50 | | | | | | | | | | |--- weights: [0.00, 8.93] class: 1 | | | | |--- avg_price_per_room > 105.27 | | | | | |--- required_car_parking_space <= 0.50 | | | | | | |--- arrival_year <= 2017.50 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | |--- avg_price_per_room <= 115.66 | | | | | | | | | |--- weights: [0.00, 14.14] class: 1 | | | | | | | | |--- avg_price_per_room > 115.66 | | | | | | | | | |--- avg_price_per_room <= 116.97 | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 116.97 | | | | | | | | | | |--- avg_price_per_room <= 145.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- avg_price_per_room > 145.50 | | | | | | | | | | | |--- weights: [0.00, 7.44] class: 1 | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | |--- weights: [19.81, 0.00] class: 0 | | | | | | |--- arrival_year > 2017.50 | | | | | | | |--- arrival_month <= 10.50 | | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 144.76 | | | | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | | | | |--- truncated branch of depth 24 | | | | | | | | | | |--- arrival_date > 23.50 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | |--- avg_price_per_room > 144.76 | | | | | | | | | | |--- arrival_month <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- arrival_month > 2.50 | | | | | | | | | | | |--- truncated branch of depth 20 | | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | | |--- arrival_date <= 26.50 | | | | | | | | | | |--- avg_price_per_room <= 175.71 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- avg_price_per_room > 175.71 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 26.50 | | | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | | | |--- arrival_month > 10.50 | | | | | | | | |--- lead_time <= 46.00 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- lead_time <= 39.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- lead_time > 39.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- lead_time <= 24.50 | | | | | | | | | | | |--- weights: [0.00, 15.63] class: 1 | | | | | | | | | | |--- lead_time > 24.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- lead_time > 46.00 | | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | | |--- avg_price_per_room <= 175.65 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- avg_price_per_room > 175.65 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | |--- required_car_parking_space > 0.50 | | | | | | |--- no_of_weekend_nights <= 3.00 | | | | | | | |--- lead_time <= 13.50 | | | | | | | | |--- no_of_weekend_nights <= 1.00 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- no_of_weekend_nights > 1.00 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- lead_time > 13.50 | | | | | | | | |--- weights: [0.00, 34.23] class: 1 | | | | | | |--- no_of_weekend_nights > 3.00 | | | | | | | |--- weights: [1.52, 0.00] class: 0 | |--- no_of_special_requests > 0.50 | | |--- no_of_special_requests <= 1.50 | | | |--- market_segment_type_Online <= 0.50 | | | | |--- lead_time <= 102.50 | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | |--- no_of_week_nights <= 11.00 | | | | | | | |--- room_type_reserved_Room_Type 5 <= 0.50 | | | | | | | | |--- lead_time <= 91.50 | | | | | | | | | |--- avg_price_per_room <= 129.50 | | | | | | | | | | |--- weights: [0.00, 672.00] class: 1 | | | | | | | | | |--- avg_price_per_room > 129.50 | | | | | | | | | | |--- avg_price_per_room <= 131.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 131.50 | | | | | | | | | | | |--- weights: [0.00, 21.58] class: 1 | | | | | | | | |--- lead_time > 91.50 | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | |--- weights: [0.00, 32.74] class: 1 | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | |--- lead_time <= 95.50 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | | |--- lead_time > 95.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | |--- room_type_reserved_Room_Type 5 > 0.50 | | | | | | | | |--- market_segment_type_Corporate <= 0.50 | | | | | | | | | |--- weights: [0.00, 8.19] class: 1 | | | | | | | | |--- market_segment_type_Corporate > 0.50 | | | | | | | | | |--- repeated_guest <= 0.50 | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | |--- repeated_guest > 0.50 | | | | | | | | | | |--- arrival_month <= 6.00 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- arrival_month > 6.00 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | |--- no_of_week_nights > 11.00 | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | |--- lead_time <= 63.00 | | | | | | | |--- market_segment_type_Corporate <= 0.50 | | | | | | | | |--- weights: [0.00, 13.40] class: 1 | | | | | | | |--- market_segment_type_Corporate > 0.50 | | | | | | | | |--- arrival_date <= 14.50 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_date > 14.50 | | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | |--- lead_time > 63.00 | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | |--- lead_time > 102.50 | | | | | |--- no_of_week_nights <= 2.50 | | | | | | |--- lead_time <= 105.00 | | | | | | | |--- avg_price_per_room <= 67.65 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- avg_price_per_room > 67.65 | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | | |--- lead_time > 105.00 | | | | | | | |--- avg_price_per_room <= 83.39 | | | | | | | | |--- arrival_month <= 3.50 | | | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | | | | | | |--- arrival_month > 3.50 | | | | | | | | | |--- arrival_date <= 6.50 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | |--- arrival_date > 6.50 | | | | | | | | | | |--- arrival_month <= 4.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- arrival_month > 4.50 | | | | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 83.39 | | | | | | | | |--- avg_price_per_room <= 141.25 | | | | | | | | | |--- lead_time <= 143.50 | | | | | | | | | | |--- arrival_date <= 25.00 | | | | | | | | | | | |--- weights: [0.00, 17.86] class: 1 | | | | | | | | | | |--- arrival_date > 25.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- lead_time > 143.50 | | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 141.25 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | |--- no_of_week_nights > 2.50 | | | | | | |--- avg_price_per_room <= 122.00 | | | | | | | |--- avg_price_per_room <= 97.33 | | | | | | | | |--- weights: [0.00, 35.72] class: 1 | | | | | | | |--- avg_price_per_room > 97.33 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 102.28 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- avg_price_per_room > 102.28 | | | | | | | | | | |--- weights: [0.00, 8.19] class: 1 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | |--- weights: [1.52, 0.74] class: 0 | | | | | | |--- avg_price_per_room > 122.00 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | |--- market_segment_type_Online > 0.50 | | | | |--- lead_time <= 6.50 | | | | | |--- no_of_week_nights <= 10.00 | | | | | | |--- avg_price_per_room <= 157.93 | | | | | | | |--- arrival_date <= 13.50 | | | | | | | | |--- lead_time <= 4.50 | | | | | | | | | |--- room_type_reserved_Room_Type 2 <= 0.50 | | | | | | | | | | |--- arrival_month <= 10.50 | | | | | | | | | | | |--- truncated branch of depth 11 | | | | | | | | | | |--- arrival_month > 10.50 | | | | | | | | | | | |--- weights: [0.00, 36.47] class: 1 | | | | | | | | | |--- room_type_reserved_Room_Type 2 > 0.50 | | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | |--- lead_time > 4.50 | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | |--- avg_price_per_room <= 87.00 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- avg_price_per_room > 87.00 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | |--- weights: [0.00, 17.12] class: 1 | | | | | | | |--- arrival_date > 13.50 | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | | |--- lead_time <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- lead_time > 0.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | | |--- avg_price_per_room <= 87.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- avg_price_per_room > 87.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | |--- arrival_date <= 22.50 | | | | | | | | | | |--- arrival_date <= 14.50 | | | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | | | |--- arrival_date > 14.50 | | | | | | | | | | | |--- weights: [0.00, 58.05] class: 1 | | | | | | | | | |--- arrival_date > 22.50 | | | | | | | | | | |--- avg_price_per_room <= 131.67 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- avg_price_per_room > 131.67 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | |--- avg_price_per_room > 157.93 | | | | | | | |--- arrival_date <= 18.50 | | | | | | | | |--- arrival_date <= 16.50 | | | | | | | | | |--- lead_time <= 4.50 | | | | | | | | | | |--- avg_price_per_room <= 179.28 | | | | | | | | | | | |--- weights: [0.00, 20.84] class: 1 | | | | | | | | | | |--- avg_price_per_room > 179.28 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | |--- lead_time > 4.50 | | | | | | | | | | |--- avg_price_per_room <= 165.88 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- avg_price_per_room > 165.88 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- arrival_date > 16.50 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 6 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- room_type_reserved_Room_Type 6 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- arrival_date > 18.50 | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | |--- lead_time <= 1.50 | | | | | | | | | | |--- arrival_date <= 20.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- arrival_date > 20.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- lead_time > 1.50 | | | | | | | | | | |--- no_of_week_nights <= 2.00 | | | | | | | | | | | |--- weights: [0.00, 5.95] class: 1 | | | | | | | | | | |--- no_of_week_nights > 2.00 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | |--- weights: [0.00, 29.02] class: 1 | | | | | |--- no_of_week_nights > 10.00 | | | | | | |--- lead_time <= 4.50 | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | |--- lead_time > 4.50 | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | |--- lead_time > 6.50 | | | | | |--- required_car_parking_space <= 0.50 | | | | | | |--- avg_price_per_room <= 118.64 | | | | | | | |--- lead_time <= 59.50 | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | |--- no_of_week_nights <= 4.50 | | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 74.42] class: 1 | | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | | |--- truncated branch of depth 20 | | | | | | | | | |--- no_of_week_nights > 4.50 | | | | | | | | | | |--- arrival_month <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 6.70] class: 1 | | | | | | | | | | |--- arrival_month > 1.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | |--- no_of_week_nights <= 8.50 | | | | | | | | | | |--- weights: [0.00, 141.40] class: 1 | | | | | | | | | |--- no_of_week_nights > 8.50 | | | | | | | | | | |--- avg_price_per_room <= 79.30 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 79.30 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- lead_time > 59.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | | |--- lead_time <= 66.50 | | | | | | | | | | | |--- weights: [0.00, 12.65] class: 1 | | | | | | | | | | |--- lead_time > 66.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | |--- avg_price_per_room <= 71.93 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- avg_price_per_room > 71.93 | | | | | | | | | | | |--- truncated branch of depth 17 | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | | |--- truncated branch of depth 14 | | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | |--- avg_price_per_room > 118.64 | | | | | | | |--- arrival_month <= 8.50 | | | | | | | | |--- arrival_date <= 19.50 | | | | | | | | | |--- no_of_week_nights <= 7.50 | | | | | | | | | | |--- avg_price_per_room <= 177.15 | | | | | | | | | | | |--- truncated branch of depth 15 | | | | | | | | | | |--- avg_price_per_room > 177.15 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | |--- no_of_week_nights > 7.50 | | | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | | | | |--- arrival_date > 19.50 | | | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | | | |--- avg_price_per_room <= 126.95 | | | | | | | | | | | |--- truncated branch of depth 10 | | | | | | | | | | |--- avg_price_per_room > 126.95 | | | | | | | | | | | |--- truncated branch of depth 13 | | | | | | | | | |--- arrival_date > 27.50 | | | | | | | | | | |--- lead_time <= 55.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- lead_time > 55.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | |--- arrival_month > 8.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | |--- lead_time <= 28.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- lead_time > 28.50 | | | | | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | |--- weights: [0.00, 42.42] class: 1 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- room_type_reserved_Room_Type 7 <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 30 | | | | | | | | | | |--- room_type_reserved_Room_Type 7 > 0.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- lead_time <= 100.00 | | | | | | | | | | | |--- weights: [0.00, 55.07] class: 1 | | | | | | | | | | |--- lead_time > 100.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | |--- required_car_parking_space > 0.50 | | | | | | |--- lead_time <= 150.00 | | | | | | | |--- no_of_week_nights <= 7.50 | | | | | | | | |--- weights: [0.00, 150.33] class: 1 | | | | | | | |--- no_of_week_nights > 7.50 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- lead_time > 150.00 | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | |--- no_of_special_requests > 1.50 | | | |--- lead_time <= 90.50 | | | | |--- no_of_week_nights <= 3.50 | | | | | |--- required_car_parking_space <= 0.50 | | | | | | |--- weights: [0.00, 1597.77] class: 1 | | | | | |--- required_car_parking_space > 0.50 | | | | | | |--- weights: [0.00, 109.40] class: 1 | | | | |--- no_of_week_nights > 3.50 | | | | | |--- no_of_week_nights <= 9.50 | | | | | | |--- no_of_special_requests <= 2.50 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- arrival_date <= 5.50 | | | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | | | |--- weights: [0.00, 27.53] class: 1 | | | | | | | | |--- arrival_date > 5.50 | | | | | | | | | |--- lead_time <= 8.50 | | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 24.56] class: 1 | | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- lead_time > 8.50 | | | | | | | | | | |--- avg_price_per_room <= 93.09 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- avg_price_per_room > 93.09 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- weights: [0.00, 26.79] class: 1 | | | | | | |--- no_of_special_requests > 2.50 | | | | | | | |--- weights: [0.00, 55.07] class: 1 | | | | | |--- no_of_week_nights > 9.50 | | | | | | |--- no_of_weekend_nights <= 4.00 | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | |--- no_of_weekend_nights > 4.00 | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | |--- lead_time > 90.50 | | | | |--- no_of_special_requests <= 2.50 | | | | | |--- arrival_month <= 8.50 | | | | | | |--- lead_time <= 150.50 | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | |--- arrival_month <= 7.50 | | | | | | | | | |--- arrival_date <= 4.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_date > 4.50 | | | | | | | | | | |--- arrival_date <= 26.00 | | | | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | | | | | | |--- arrival_date > 26.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- arrival_month > 7.50 | | | | | | | | | |--- arrival_date <= 14.00 | | | | | | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- market_segment_type_Online > 0.50 | | | | | | | | | | | |--- weights: [0.00, 6.70] class: 1 | | | | | | | | | |--- arrival_date > 14.00 | | | | | | | | | | |--- avg_price_per_room <= 84.14 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | | | |--- avg_price_per_room > 84.14 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | |--- avg_price_per_room <= 157.50 | | | | | | | | | |--- no_of_children <= 0.50 | | | | | | | | | | |--- arrival_date <= 29.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- arrival_date > 29.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- no_of_children > 0.50 | | | | | | | | | | |--- lead_time <= 107.50 | | | | | | | | | | | |--- weights: [0.00, 9.67] class: 1 | | | | | | | | | | |--- lead_time > 107.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- avg_price_per_room > 157.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- lead_time <= 141.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 141.00 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- arrival_date <= 12.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 12.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | |--- lead_time > 150.50 | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | |--- arrival_month > 8.50 | | | | | | |--- avg_price_per_room <= 153.15 | | | | | | | |--- avg_price_per_room <= 73.53 | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | |--- arrival_date <= 4.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- arrival_date > 4.50 | | | | | | | | | | |--- lead_time <= 121.50 | | | | | | | | | | | |--- weights: [0.00, 11.16] class: 1 | | | | | | | | | | |--- lead_time > 121.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- avg_price_per_room > 73.53 | | | | | | | | |--- avg_price_per_room <= 90.42 | | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | | |--- lead_time <= 123.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 123.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | | |--- arrival_date <= 21.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- arrival_date > 21.50 | | | | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 90.42 | | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | | |--- lead_time <= 144.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- lead_time > 144.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | |--- avg_price_per_room > 153.15 | | | | | | | |--- arrival_date <= 22.50 | | | | | | | | |--- weights: [0.00, 9.67] class: 1 | | | | | | | |--- arrival_date > 22.50 | | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- arrival_date > 23.50 | | | | | | | | | |--- lead_time <= 106.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- lead_time > 106.50 | | | | | | | | | | |--- arrival_date <= 24.50 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- arrival_date > 24.50 | | | | | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | |--- no_of_special_requests > 2.50 | | | | | |--- weights: [0.00, 70.70] class: 1 |--- lead_time > 151.50 | |--- avg_price_per_room <= 100.04 | | |--- no_of_special_requests <= 0.50 | | | |--- no_of_adults <= 1.50 | | | | |--- market_segment_type_Online <= 0.50 | | | | | |--- lead_time <= 163.50 | | | | | | |--- avg_price_per_room <= 85.50 | | | | | | | |--- lead_time <= 161.50 | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | |--- lead_time > 161.50 | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | |--- avg_price_per_room > 85.50 | | | | | | | |--- weights: [28.95, 0.00] class: 0 | | | | | |--- lead_time > 163.50 | | | | | | |--- lead_time <= 341.00 | | | | | | | |--- lead_time <= 173.00 | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | | |--- weights: [9.14, 48.37] class: 1 | | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | |--- no_of_weekend_nights <= 1.00 | | | | | | | | | | |--- weights: [15.24, 0.00] class: 0 | | | | | | | | | |--- no_of_weekend_nights > 1.00 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | |--- lead_time > 173.00 | | | | | | | | |--- avg_price_per_room <= 98.00 | | | | | | | | | |--- arrival_month <= 5.50 | | | | | | | | | | |--- avg_price_per_room <= 88.00 | | | | | | | | | | | |--- weights: [0.00, 7.44] class: 1 | | | | | | | | | | |--- avg_price_per_room > 88.00 | | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | | |--- arrival_month > 5.50 | | | | | | | | | | |--- avg_price_per_room <= 55.21 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 55.21 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | |--- avg_price_per_room > 98.00 | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | | |--- lead_time > 341.00 | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | |--- avg_price_per_room <= 88.00 | | | | | | | | | |--- weights: [16.76, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 88.00 | | | | | | | | | |--- arrival_month <= 9.50 | | | | | | | | | | |--- weights: [4.57, 3.72] class: 0 | | | | | | | | | |--- arrival_month > 9.50 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | | |--- weights: [4.57, 2.98] class: 0 | | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | | |--- weights: [1.52, 0.74] class: 0 | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | |--- avg_price_per_room <= 80.00 | | | | | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | | | | | |--- avg_price_per_room > 80.00 | | | | | | | | | |--- weights: [3.05, 2.23] class: 0 | | | | |--- market_segment_type_Online > 0.50 | | | | | |--- avg_price_per_room <= 35.22 | | | | | | |--- lead_time <= 285.50 | | | | | | | |--- weights: [0.00, 8.19] class: 1 | | | | | | |--- lead_time > 285.50 | | | | | | | |--- arrival_date <= 11.00 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- arrival_date > 11.00 | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | |--- avg_price_per_room > 35.22 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- weights: [91.43, 0.00] class: 0 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- arrival_date <= 28.50 | | | | | | | | |--- weights: [9.14, 0.00] class: 0 | | | | | | | |--- arrival_date > 28.50 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | |--- no_of_adults > 1.50 | | | | |--- avg_price_per_room <= 82.47 | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | |--- lead_time <= 244.00 | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | | |--- lead_time <= 166.50 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | |--- lead_time > 166.50 | | | | | | | | | | |--- avg_price_per_room <= 69.34 | | | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | | | |--- avg_price_per_room > 69.34 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | | |--- weights: [0.00, 19.35] class: 1 | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | |--- avg_price_per_room <= 66.50 | | | | | | | | | |--- arrival_date <= 13.00 | | | | | | | | | | |--- weights: [0.00, 9.67] class: 1 | | | | | | | | | |--- arrival_date > 13.00 | | | | | | | | | | |--- avg_price_per_room <= 62.82 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 62.82 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- avg_price_per_room > 66.50 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | | | |--- avg_price_per_room <= 75.75 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- avg_price_per_room > 75.75 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | |--- lead_time > 244.00 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- arrival_year <= 2017.50 | | | | | | | | | |--- weights: [0.00, 27.53] class: 1 | | | | | | | | |--- arrival_year > 2017.50 | | | | | | | | | |--- avg_price_per_room <= 80.38 | | | | | | | | | | |--- no_of_week_nights <= 3.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- no_of_week_nights > 3.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- avg_price_per_room > 80.38 | | | | | | | | | | |--- weights: [0.00, 8.19] class: 1 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- weights: [0.00, 27.53] class: 1 | | | | | |--- market_segment_type_Online > 0.50 | | | | | | |--- arrival_month <= 11.50 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 <= 0.50 | | | | | | | | |--- weights: [71.62, 0.00] class: 0 | | | | | | | |--- type_of_meal_plan_Meal Plan 1 > 0.50 | | | | | | | | |--- weights: [141.71, 0.00] class: 0 | | | | | | |--- arrival_month > 11.50 | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | |--- arrival_date <= 3.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- arrival_date > 3.50 | | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | | |--- weights: [7.62, 0.00] class: 0 | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | |--- no_of_weekend_nights <= 0.50 | | | | | | | | | |--- avg_price_per_room <= 76.87 | | | | | | | | | | |--- weights: [10.67, 0.00] class: 0 | | | | | | | | | |--- avg_price_per_room > 76.87 | | | | | | | | | | |--- lead_time <= 230.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- lead_time > 230.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- no_of_weekend_nights > 0.50 | | | | | | | | | |--- weights: [71.62, 0.00] class: 0 | | | | |--- avg_price_per_room > 82.47 | | | | | |--- no_of_adults <= 2.50 | | | | | | |--- lead_time <= 324.50 | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | |--- market_segment_type_Corporate <= 0.50 | | | | | | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | | |--- market_segment_type_Online > 0.50 | | | | | | | | | | | |--- weights: [539.43, 0.00] class: 0 | | | | | | | | | |--- market_segment_type_Corporate > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | | | | |--- weights: [10.67, 0.00] class: 0 | | | | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | | | | | |--- arrival_month > 11.50 | | | | | | | | |--- market_segment_type_Offline <= 0.50 | | | | | | | | | |--- weights: [19.81, 0.00] class: 0 | | | | | | | | |--- market_segment_type_Offline > 0.50 | | | | | | | | | |--- avg_price_per_room <= 85.73 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | |--- avg_price_per_room > 85.73 | | | | | | | | | | |--- weights: [0.00, 4.47] class: 1 | | | | | | |--- lead_time > 324.50 | | | | | | | |--- no_of_weekend_nights <= 1.50 | | | | | | | | |--- no_of_week_nights <= 2.50 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- no_of_week_nights > 2.50 | | | | | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | | | | | |--- weights: [7.62, 0.74] class: 0 | | | | | | | | | |--- market_segment_type_Online > 0.50 | | | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | | | |--- no_of_weekend_nights > 1.50 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | |--- weights: [0.00, 5.21] class: 1 | | | | | |--- no_of_adults > 2.50 | | | | | | |--- weights: [0.00, 5.21] class: 1 | | |--- no_of_special_requests > 0.50 | | | |--- no_of_weekend_nights <= 0.50 | | | | |--- lead_time <= 180.50 | | | | | |--- lead_time <= 159.50 | | | | | | |--- arrival_month <= 8.50 | | | | | | | |--- avg_price_per_room <= 98.81 | | | | | | | | |--- lead_time <= 152.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- lead_time > 152.50 | | | | | | | | | |--- weights: [0.00, 5.21] class: 1 | | | | | | | |--- avg_price_per_room > 98.81 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- arrival_month > 8.50 | | | | | | | |--- arrival_date <= 12.00 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- arrival_date > 12.00 | | | | | | | | |--- arrival_date <= 23.50 | | | | | | | | | |--- lead_time <= 157.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- lead_time > 157.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- arrival_date > 23.50 | | | | | | | | | |--- weights: [6.10, 0.00] class: 0 | | | | | |--- lead_time > 159.50 | | | | | | |--- arrival_date <= 1.50 | | | | | | | |--- lead_time <= 176.50 | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- lead_time > 176.50 | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | |--- arrival_date > 1.50 | | | | | | | |--- no_of_adults <= 0.50 | | | | | | | | |--- avg_price_per_room <= 96.08 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 96.08 | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | |--- no_of_adults > 0.50 | | | | | | | | |--- weights: [0.00, 42.42] class: 1 | | | | |--- lead_time > 180.50 | | | | | |--- market_segment_type_Online <= 0.50 | | | | | | |--- no_of_adults <= 2.50 | | | | | | | |--- lead_time <= 302.50 | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | |--- lead_time > 302.50 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 <= 0.50 | | | | | | | | | |--- no_of_special_requests <= 1.50 | | | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | | | | |--- no_of_special_requests > 1.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- type_of_meal_plan_Meal Plan 2 > 0.50 | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- no_of_adults > 2.50 | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | |--- market_segment_type_Online > 0.50 | | | | | | |--- no_of_special_requests <= 2.50 | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | |--- arrival_month <= 11.50 | | | | | | | | | |--- weights: [208.76, 0.00] class: 0 | | | | | | | | |--- arrival_month > 11.50 | | | | | | | | | |--- lead_time <= 272.00 | | | | | | | | | | |--- lead_time <= 221.50 | | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | | | |--- lead_time > 221.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- lead_time > 272.00 | | | | | | | | | | |--- avg_price_per_room <= 73.10 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- avg_price_per_room > 73.10 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | |--- no_of_special_requests > 2.50 | | | | | | | |--- weights: [0.00, 8.93] class: 1 | | | |--- no_of_weekend_nights > 0.50 | | | | |--- market_segment_type_Online <= 0.50 | | | | | |--- lead_time <= 348.50 | | | | | | |--- no_of_week_nights <= 5.50 | | | | | | | |--- arrival_date <= 30.00 | | | | | | | | |--- weights: [0.00, 112.37] class: 1 | | | | | | | |--- arrival_date > 30.00 | | | | | | | | |--- no_of_week_nights <= 3.00 | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | |--- no_of_week_nights > 3.00 | | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | |--- no_of_week_nights > 5.50 | | | | | | | |--- no_of_weekend_nights <= 3.00 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- no_of_weekend_nights > 3.00 | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | |--- lead_time > 348.50 | | | | | | |--- avg_price_per_room <= 58.50 | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | |--- avg_price_per_room > 58.50 | | | | | | | |--- no_of_adults <= 1.50 | | | | | | | | |--- weights: [1.52, 1.49] class: 0 | | | | | | | |--- no_of_adults > 1.50 | | | | | | | | |--- weights: [3.05, 4.47] class: 1 | | | | |--- market_segment_type_Online > 0.50 | | | | | |--- arrival_month <= 11.50 | | | | | | |--- avg_price_per_room <= 76.48 | | | | | | | |--- no_of_week_nights <= 9.00 | | | | | | | | |--- lead_time <= 216.50 | | | | | | | | | |--- room_type_reserved_Room_Type 4 <= 0.50 | | | | | | | | | | |--- weights: [0.00, 28.28] class: 1 | | | | | | | | | |--- room_type_reserved_Room_Type 4 > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | |--- lead_time > 216.50 | | | | | | | | | |--- lead_time <= 218.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | | |--- lead_time > 218.50 | | | | | | | | | | |--- avg_price_per_room <= 71.40 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- avg_price_per_room > 71.40 | | | | | | | | | | | |--- weights: [0.00, 11.91] class: 1 | | | | | | | |--- no_of_week_nights > 9.00 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | |--- avg_price_per_room > 76.48 | | | | | | | |--- no_of_week_nights <= 6.50 | | | | | | | | |--- arrival_date <= 27.50 | | | | | | | | | |--- lead_time <= 233.00 | | | | | | | | | | |--- type_of_meal_plan_Not Selected <= 0.50 | | | | | | | | | | | |--- truncated branch of depth 12 | | | | | | | | | | |--- type_of_meal_plan_Not Selected > 0.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | | |--- lead_time > 233.00 | | | | | | | | | | |--- no_of_children <= 1.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | | |--- no_of_children > 1.50 | | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | | |--- arrival_date > 27.50 | | | | | | | | | |--- no_of_week_nights <= 1.50 | | | | | | | | | | |--- lead_time <= 234.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- lead_time > 234.00 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- no_of_week_nights > 1.50 | | | | | | | | | | |--- lead_time <= 269.00 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- lead_time > 269.00 | | | | | | | | | | | |--- weights: [4.57, 0.00] class: 0 | | | | | | | |--- no_of_week_nights > 6.50 | | | | | | | | |--- avg_price_per_room <= 81.81 | | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | | | |--- avg_price_per_room > 81.81 | | | | | | | | | |--- arrival_date <= 28.00 | | | | | | | | | | |--- lead_time <= 204.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- lead_time > 204.50 | | | | | | | | | | | |--- weights: [9.14, 0.00] class: 0 | | | | | | | | | |--- arrival_date > 28.00 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | |--- arrival_month > 11.50 | | | | | | |--- arrival_date <= 14.50 | | | | | | | |--- arrival_date <= 3.00 | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | |--- arrival_date > 3.00 | | | | | | | | |--- avg_price_per_room <= 64.43 | | | | | | | | | |--- arrival_date <= 8.50 | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | |--- arrival_date > 8.50 | | | | | | | | | | |--- weights: [1.52, 0.00] class: 0 | | | | | | | | |--- avg_price_per_room > 64.43 | | | | | | | | | |--- required_car_parking_space <= 0.50 | | | | | | | | | | |--- weights: [0.00, 5.95] class: 1 | | | | | | | | | |--- required_car_parking_space > 0.50 | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | |--- arrival_date > 14.50 | | | | | | | |--- avg_price_per_room <= 55.92 | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | |--- avg_price_per_room > 55.92 | | | | | | | | |--- no_of_special_requests <= 2.50 | | | | | | | | | |--- avg_price_per_room <= 80.19 | | | | | | | | | | |--- no_of_week_nights <= 0.50 | | | | | | | | | | | |--- weights: [0.00, 0.74] class: 1 | | | | | | | | | | |--- no_of_week_nights > 0.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- avg_price_per_room > 80.19 | | | | | | | | | | |--- avg_price_per_room <= 83.20 | | | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | | | | | | | | | | |--- avg_price_per_room > 83.20 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | |--- no_of_special_requests > 2.50 | | | | | | | | | |--- weights: [0.00, 2.23] class: 1 | |--- avg_price_per_room > 100.04 | | |--- arrival_month <= 11.50 | | | |--- no_of_special_requests <= 2.50 | | | | |--- weights: [3420.94, 0.00] class: 0 | | | |--- no_of_special_requests > 2.50 | | | | |--- room_type_reserved_Room_Type 6 <= 0.50 | | | | | |--- weights: [0.00, 23.07] class: 1 | | | | |--- room_type_reserved_Room_Type 6 > 0.50 | | | | | |--- weights: [0.00, 2.23] class: 1 | | |--- arrival_month > 11.50 | | | |--- no_of_special_requests <= 0.50 | | | | |--- no_of_adults <= 1.50 | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | |--- no_of_adults > 1.50 | | | | | |--- weights: [0.00, 36.47] class: 1 | | | |--- no_of_special_requests > 0.50 | | | | |--- arrival_date <= 24.50 | | | | | |--- weights: [0.00, 3.72] class: 1 | | | | |--- arrival_date > 24.50 | | | | | |--- room_type_reserved_Room_Type 1 <= 0.50 | | | | | | |--- lead_time <= 172.50 | | | | | | | |--- no_of_special_requests <= 1.50 | | | | | | | | |--- weights: [3.05, 0.00] class: 0 | | | | | | | |--- no_of_special_requests > 1.50 | | | | | | | | |--- weights: [0.00, 1.49] class: 1 | | | | | | |--- lead_time > 172.50 | | | | | | | |--- weights: [21.33, 0.00] class: 0 | | | | | |--- room_type_reserved_Room_Type 1 > 0.50 | | | | | | |--- arrival_date <= 29.50 | | | | | | | |--- weights: [0.00, 2.98] class: 1 | | | | | | |--- arrival_date > 29.50 | | | | | | | |--- weights: [1.52, 0.00] class: 0
# importance of features in the tree building ( The importance of a feature is computed as the
#(normalized) total reduction of the criterion brought by that feature. It is also known as the Gini importance )
print (pd.DataFrame(model1.feature_importances_, columns = ["Imp"], index = X_train_1.columns).sort_values(by = 'Imp', ascending = False))
Imp lead_time 3.546921e-01 avg_price_per_room 1.451060e-01 market_segment_type_Online 9.927818e-02 no_of_special_requests 8.744919e-02 arrival_date 7.923991e-02 arrival_month 6.491302e-02 no_of_week_nights 4.727423e-02 no_of_weekend_nights 3.521480e-02 no_of_adults 2.483506e-02 arrival_year 1.478369e-02 required_car_parking_space 7.671935e-03 type_of_meal_plan_Meal Plan 1 6.398172e-03 no_of_children 5.440778e-03 market_segment_type_Offline 4.753674e-03 type_of_meal_plan_Not Selected 4.583734e-03 room_type_reserved_Room_Type 4 4.348686e-03 room_type_reserved_Room_Type 1 3.735842e-03 type_of_meal_plan_Meal Plan 2 2.844551e-03 room_type_reserved_Room_Type 2 2.619388e-03 repeated_guest 1.095896e-03 room_type_reserved_Room_Type 5 9.518129e-04 market_segment_type_Corporate 5.876642e-04 no_of_previous_bookings_not_canceled 5.813325e-04 market_segment_type_Aviation 5.700621e-04 room_type_reserved_Room_Type 6 5.189618e-04 room_type_reserved_Room_Type 7 3.591227e-04 market_segment_type_Complementary 1.355168e-04 room_type_reserved_Room_Type 3 1.667297e-05 no_of_previous_cancellations 3.857230e-18 type_of_meal_plan_Meal Plan 3 0.000000e+00
importances = model1.feature_importances_
indices = np.argsort(importances)
plt.figure(figsize=(10,10))
plt.title('Feature Importances')
plt.barh(range(len(indices)), importances[indices], color='violet', align='center')
plt.yticks(range(len(indices)), [feature_name[i] for i in indices])
plt.xlabel('Relative Importance')
plt.show()
Let's use pruning techniques to try and reduce overfitting.
Using GridSearch for Hyperparameter tuning of our tree model
from sklearn.metrics import make_scorer
estimator=DecisionTreeClassifier(random_state=1)
parameter={
"class_weight": [None, "balanced"],
"max_depth": np.arange(2, 7, 2),
"max_leaf_nodes": [50, 75, 150, 250],
"min_samples_split": [10, 30, 50, 70],
}
scoring_parameter=make_scorer(recall_score)
gridObj=GridSearchCV(estimator,parameter,scoring=scoring_parameter,cv=5)
gridObj.fit(X_train_1,y_train_1)
estimator=gridObj.best_estimator_
estimator.fit(X_train_1,y_train_1)
DecisionTreeClassifier(max_depth=2, max_leaf_nodes=50, min_samples_split=10,
random_state=1)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. DecisionTreeClassifier(max_depth=2, max_leaf_nodes=50, min_samples_split=10,
random_state=1)decision_tree_perf_train_estimator= model_performance_classification_sklearn(estimator,X_train_1,y_train_1)
decision_tree_perf_train_estimator
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.759318 | 0.918431 | 0.768505 | 0.836806 |
confusion_matrix_sklearn(estimator,X_train_1,y_train_1)
GVsearch for testdata
decision_tree_perf_test_estimator= model_performance_classification_sklearn(estimator,X_test_1,y_test_1)
decision_tree_perf_test_estimator
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.763259 | 0.920144 | 0.772178 | 0.839692 |
confusion_matrix_sklearn(estimator,X_test_1,y_test_1)
feature_name=X_train_1.columns.to_list()
feature_important=estimator.feature_importances_
tree.plot_tree(estimator,filled=True,feature_names=feature_name,impurity=True,node_ids=True,fontsize=10);
print(tree.export_text(estimator,feature_names=feature_name,show_weights=True))
|--- lead_time <= 151.50 | |--- no_of_special_requests <= 0.50 | | |--- weights: [3783.00, 7635.00] class: 1 | |--- no_of_special_requests > 0.50 | | |--- weights: [1274.00, 9153.00] class: 1 |--- lead_time > 151.50 | |--- avg_price_per_room <= 100.04 | | |--- weights: [1608.00, 1395.00] class: 0 | |--- avg_price_per_room > 100.04 | | |--- weights: [2262.00, 96.00] class: 0
index_sort=np.argsort(feature_important)
plt.barh(range(len(index_sort)),feature_important[index_sort]);
plt.yticks(range(len(index_sort)),[feature_name[i] for i in index_sort]);
plt.xlabel("Relative Importance")
plt.show()
Using the above extracted decision rules we can make interpretations from the decision tree model like:
If the lead Time is less than or equal to .42 (less than half year), the no_of_special_request is less than or equal to .50,the customer mostly likly not cancel
If the lead Time is greater than .42 (more than half year), the avg_price_per_room is less than or equal to 100.04,the customer mostly likly cancel
The DecisionTreeClassifier provides parameters such as
min_samples_leaf and max_depth to prevent a tree from overfiting. Cost
complexity pruning provides another option to control the size of a tree. In
DecisionTreeClassifier, this pruning technique is parameterized by the
cost complexity parameter, ccp_alpha. Greater values of ccp_alpha
increase the number of nodes pruned. Here we only show the effect of
ccp_alpha on regularizing the trees and how to choose a ccp_alpha
based on validation scores.
Total impurity of leaves vs effective alphas of pruned tree
Minimal cost complexity pruning recursively finds the node with the "weakest
link". The weakest link is characterized by an effective alpha, where the
nodes with the smallest effective alpha are pruned first. To get an idea of
what values of ccp_alpha could be appropriate, scikit-learn provides
DecisionTreeClassifier.cost_complexity_pruning_path that returns the
effective alphas and the corresponding total leaf impurities at each step of
the pruning process. As alpha increases, more of the tree is pruned, which
increases the total impurity of its leaves.
clf = DecisionTreeClassifier(random_state=1, class_weight="balanced")
path = clf.cost_complexity_pruning_path(X_train_1, y_train_1)
ccp_alphas, impurities = path.ccp_alphas, path.impurities
pd.DataFrame(path)
| ccp_alphas | impurities | |
|---|---|---|
| 0 | 0.000000e+00 | 0.008711 |
| 1 | 2.429505e-20 | 0.008711 |
| 2 | 2.429505e-20 | 0.008711 |
| 3 | 2.429505e-20 | 0.008711 |
| 4 | 2.429505e-20 | 0.008711 |
| ... | ... | ... |
| 1924 | 8.757723e-03 | 0.328329 |
| 1925 | 9.901061e-03 | 0.338230 |
| 1926 | 1.279128e-02 | 0.351022 |
| 1927 | 3.400231e-02 | 0.419026 |
| 1928 | 8.097381e-02 | 0.500000 |
1929 rows × 2 columns
Graph for the ccp_alphas vs impurities
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(ccp_alphas[:-1], impurities[:-1], marker='o', drawstyle="steps-post")
ax.set_xlabel("effective alpha")
ax.set_ylabel("total impurity of leaves")
ax.set_title("Total Impurity vs effective alpha for training set")
plt.show()
Next, we train a decision tree using the effective alphas. The last value in ccp_alphas is the alpha value that prunes the whole tree, leaving the tree, clfs[-1], with one node.
clfs = []
for ccp_alpha in ccp_alphas:
clf = DecisionTreeClassifier(
random_state=1, ccp_alpha=ccp_alpha, class_weight="balanced"
)
clf.fit(X_train_1, y_train_1)
clfs.append(clf)
print(
"Number of nodes in the last tree is: {} with ccp_alpha: {}".format(
clfs[-1].tree_.node_count, ccp_alphas[-1]
)
)
Number of nodes in the last tree is: 1 with ccp_alpha: 0.08097381000995474
clfs = clfs[:-1]
ccp_alphas = ccp_alphas[:-1]
node_counts = [clf.tree_.node_count for clf in clfs]
depth = [clf.tree_.max_depth for clf in clfs]
fig, ax = plt.subplots(2, 1, figsize=(10, 7))
ax[0].plot(ccp_alphas, node_counts, marker="o", drawstyle="steps-post")
ax[0].set_xlabel("alpha")
ax[0].set_ylabel("number of nodes")
ax[0].set_title("Number of nodes vs alpha")
ax[1].plot(ccp_alphas, depth, marker="o", drawstyle="steps-post")
ax[1].set_xlabel("alpha")
ax[1].set_ylabel("depth of tree")
ax[1].set_title("Depth vs alpha")
fig.tight_layout()
recall_train = []
for clf in clfs:
pred_train = clf.predict(X_train_1)
values_train = recall_score(y_train_1, pred_train)
recall_train.append(values_train)
recall_test = []
for clf in clfs:
pred_test = clf.predict(X_test_1)
values_test = recall_score(y_test_1, pred_test)
recall_test.append(values_test)
recall_test = []
for clf in clfs:
pred_test = clf.predict(X_test_1)
values_test = recall_score(y_test_1, pred_test)
recall_test.append(values_test)
train_scores = [clf.score(X_train_1, y_train_1) for clf in clfs]
test_scores = [clf.score(X_test_1, y_test_1) for clf in clfs]
fig, ax = plt.subplots(figsize=(15, 5))
ax.set_xlabel("alpha")
ax.set_ylabel("Recall")
ax.set_title("Recall vs alpha for training and testing sets")
ax.plot(
ccp_alphas, recall_train, marker="o", label="train", drawstyle="steps-post",
)
ax.plot(ccp_alphas, recall_test, marker="o", label="test", drawstyle="steps-post")
ax.legend()
plt.show()
# creating the model where we get highest train and test recall
index_best_model = np.argmax(recall_test)
best_model = clfs[index_best_model]
print(best_model)
DecisionTreeClassifier(ccp_alpha=0.03400231175331703, class_weight='balanced',
random_state=1)
confusion_matrix_sklearn(best_model,X_train_1,y_train_1)
decision_tree_post_perf_train = model_performance_classification_sklearn(
best_model, X_train_1, y_train_1
)
decision_tree_post_perf_train
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.759318 | 0.918431 | 0.768505 | 0.836806 |
confusion_matrix_sklearn(best_model,X_test_1,y_test_1)
decision_tree_post_test = model_performance_classification_sklearn(
best_model, X_test_1, y_test_1
)
decision_tree_post_test
| Accuracy | Recall | Precision | F1 | |
|---|---|---|---|---|
| 0 | 0.763259 | 0.920144 | 0.772178 | 0.839692 |
plt.figure(figsize=(20, 10))
out = tree.plot_tree(
best_model,
feature_names=feature_name,
filled=True,
fontsize=9,
node_ids=False,
class_names=None,
)
for o in out:
arrow = o.arrow_patch
if arrow is not None:
arrow.set_edgecolor("black")
arrow.set_linewidth(1)
plt.show()
# importance of features in the tree building ( The importance of a feature is computed as the
#(normalized) total reduction of the 'criterion' brought by that feature. It is also known as the Gini importance )
print (pd.DataFrame(best_model.feature_importances_, columns = ["Imp"], index = X_train_1.columns).sort_values(by = 'Imp', ascending = False))
#Here we will see that importance of features has increased
Imp lead_time 1.0 no_of_adults 0.0 type_of_meal_plan_Meal Plan 3 0.0 market_segment_type_Offline 0.0 market_segment_type_Corporate 0.0 market_segment_type_Complementary 0.0 market_segment_type_Aviation 0.0 room_type_reserved_Room_Type 7 0.0 room_type_reserved_Room_Type 6 0.0 room_type_reserved_Room_Type 5 0.0 room_type_reserved_Room_Type 4 0.0 room_type_reserved_Room_Type 3 0.0 room_type_reserved_Room_Type 2 0.0 room_type_reserved_Room_Type 1 0.0 type_of_meal_plan_Not Selected 0.0 type_of_meal_plan_Meal Plan 2 0.0 no_of_children 0.0 type_of_meal_plan_Meal Plan 1 0.0 no_of_special_requests 0.0 avg_price_per_room 0.0 no_of_previous_bookings_not_canceled 0.0 no_of_previous_cancellations 0.0 repeated_guest 0.0 arrival_date 0.0 arrival_month 0.0 arrival_year 0.0 required_car_parking_space 0.0 no_of_week_nights 0.0 no_of_weekend_nights 0.0 market_segment_type_Online 0.0
print(tree.export_text(best_model, feature_names=feature_name, show_weights=True))
|--- lead_time <= 151.50 | |--- weights: [7705.88, 12493.42] class: 1 |--- lead_time > 151.50 | |--- weights: [5897.12, 1109.58] class: 0
importances = best_model.feature_importances_
indices = np.argsort(importances)
plt.figure(figsize=(12, 12))
plt.title("Feature Importances")
plt.barh(range(len(indices)), importances[indices], color="violet", align="center")
plt.yticks(range(len(indices)), [feature_name[i] for i in indices])
plt.xlabel("Relative Importance")
plt.show()
# training performance comparison
models_train_comp_df = pd.concat(
[
decision_tree_perf_train_without.T,
decision_tree_perf_train_with_weigth.T,
decision_tree_perf_train_estimator.T,
decision_tree_post_perf_train.T,
],
axis=1,
)
models_train_comp_df.columns = [
"Decision Tree without class_weight",
"Decision Tree with class_weight",
"Decision Tree (Pre-Pruning)",
"Decision Tree (Post-Pruning)",
]
print("Training performance comparison:")
models_train_comp_df
Training performance comparison:
| Decision Tree without class_weight | Decision Tree with class_weight | Decision Tree (Pre-Pruning) | Decision Tree (Post-Pruning) | |
|---|---|---|---|---|
| Accuracy | 0.993972 | 0.992832 | 0.759318 | 0.759318 |
| Recall | 0.995569 | 0.991794 | 0.918431 | 0.918431 |
| Precision | 0.995460 | 0.997524 | 0.768505 | 0.768505 |
| F1 | 0.995514 | 0.994651 | 0.836806 | 0.836806 |
models_test_comp_df = pd.concat(
[
decision_tree_perf_test_without.T,
decision_tree_perf_test_with_weigth.T,
decision_tree_perf_test_estimator.T,
decision_tree_post_test.T,
],
axis=1,
)
models_test_comp_df.columns = [
"Decision Tree without class_weight",
"Decision Tree with class_weight",
"Decision Tree (Pre-Pruning)",
"Decision Tree (Post-Pruning)",
]
print("Test set performance comparison:")
models_test_comp_df
Test set performance comparison:
| Decision Tree without class_weight | Decision Tree with class_weight | Decision Tree (Pre-Pruning) | Decision Tree (Post-Pruning) | |
|---|---|---|---|---|
| Accuracy | 0.870438 | 0.862940 | 0.763259 | 0.763259 |
| Recall | 0.898544 | 0.890362 | 0.920144 | 0.920144 |
| Precision | 0.908204 | 0.904722 | 0.772178 | 0.772178 |
| F1 | 0.903348 | 0.897485 | 0.839692 | 0.839692 |
Lead Time Management: Bookings with longer lead times (> 6 months) are more prone to cancellations. Implement a 24-hour cancellation policy for bookings made more than 6 months in advance. This allows the hotel to rebook the room if a cancellation occurs, minimizing revenue loss.
Handling Special Requests: Guests with specific requests tend to have lower cancellation rates if their needs are met. Maintain a record of frequent special requests and proactively offer these amenities. This could improve customer satisfaction and reduce cancellations.
Promotion Strategies: Promotions like "0 dollar offers" may lead to increased cancellations. Transition from heavy discounts to value-added promotions, such as bundled services or loyalty points. This strategy can attract more committed customers and enhance revenue.
Booking Horizon Management: Displaying booking options too far in advance may lead to higher cancellation rates. Limit the booking horizon to 8-12 months. This approach balances availability with the risk of cancellations.
Room Type Optimization: Certain room types (e.g., complimentary rooms) might contribute to higher cancellation rates. Increase the availability of corporate rooms and re-evaluate the allocation of complimentary rooms to reduce cancellations and enhance profitability.
Segment-Specific Policies: Different market segments may exhibit varied cancellation behaviors. Customize cancellation policies for each market segment. For instance, corporate clients might benefit from flexible policies, whereas leisure travelers might be offered stricter terms.
Detailed Room Data: More granular data on room types can help identify which rooms are underbooked. Collect detailed information on room preferences and booking patterns to tailor marketing and pricing strategies. This can help in promoting underbooked rooms and optimizing occupancy rates.
Customer Feedback Loop: Understanding customer preferences and feedback can enhance service offerings. Implement feedback mechanisms to gather insights on guest preferences and adjust services accordingly. This can lead to improved guest satisfaction and reduced cancellations.
Data-Driven Decision Making: Continuous analysis of booking and cancellation data is essential for dynamic strategy adjustments. Establish a data analytics team to monitor booking trends and customer behavior. This team can provide actionable insights to optimize pricing, promotions, and operational strategies.